日期:2014-05-20  浏览次数:20874 次

关于IO中的public int read(char[ ] cbuf)方法
本帖最后由 yiqiu2324 于 2013-04-30 23:19:01 编辑
首先看代码:
package filereader;
import java.io.FileReader;
import java.io.IOException;
import static java.lang.System.out;
class FileReaderDemo2{
public static void main(String[] args)throws IOException{
FileReader fr = new FileReader("c:\\test.txt");//文件内容a
char[] buf = new char[3];//定义数组长度为3

int num=fr.read(buf);
out.println("num="+num+"..."+new String(buf));

num=fr.read(buf);
out.println("num="+num+"..."+new String(buf));

num=fr.read(buf);
out.println("num="+num+"..."+new String(buf));
out.println("over");
}
}

但输出结果却是:(我把源文件和test.txt均放在了c:\下)
 
竟然输出了3个a??我很郁闷,我在反复检查c:\test.txt内容->确定为一个a
我在考虑是不是因为我的操作系统缘故(windows 7 64bit 旗舰版)
于是我把java源文件和test.txt拷到XP系统下测试:
 
一个a正常.
我在用U盘把JDK和源文件拷到同学机器上运行,3个a…..
这是为什么?拜托了.

------解决方案--------------------
抱歉,刚才没看清问的。
首先这肯定不是系统计算的问题。
楼主可以尝试在32位和64位或者xp下使用exclipse编译。看结果。
我这边32位的win结果是
num=1...a(后面还有分隔符)
num=-1...a(后面还有分隔符)
我觉得有可能是显示的问题。
楼主可以尝试一下吧这结果打印到一份文件里面看看。