file.length()得到的是字节长度
Reader read = new FileReader(file)这个是文件的字符流
多字节的字符长度能和字节长度一样吗?
String s = "测试";
s.length() == s.getBytes().length(); //这两个长度一样吗?试试看不带length参数
ps.setCharacterStream(2, read);要不然就自己计算一次字符长度

解决方案 »

  1.   

    自己计算长度,可以使用CharArrayReader和CharArrayWriterint len = 0;
    Reader read = new FileReader(file);
    CharArrayWriter cw = new CharArrayWriter();
    int c = 0;
    while ((c=read.read()) != -1) {
        cw.write(c);
        len++;
    }
    read = new CharArrayReader(cw.toCharArray());ps.setCharacterStream(2, read, len); //这里的len才是字符长度
      

  2.   

    既然是字节流,用二进制
    ps.setBinaryStream(2, read,(int)file.length());   
      

  3.   

    不定义后边file.length(),然后编译就能够运行了···