关于IO中的public int read(char[ ] cbuf)方法

yiqiu2324 2013-04-30 11:18:10
首先看代码:
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…..
这是为什么?拜托了.
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiqiu2324 2013-05-02
  • 打赏
  • 举报
回复
把输出结果输出到文件中一切正常...... num=1...a num=-1...a num=-1...a over 然后再输出到控制台- -又是3个a..,参照上面解释
yiqiu2324 2013-05-02
  • 打赏
  • 举报
回复
关于这个找到这个,buf这个数组buf[1],buf[2]打印的均是ASCII码为0字符就是'\0'空字符 维基百科中关于空字符: http://zh.wikipedia.org/wiki/%E7%A9%BA%E5%AD%97%E7%AC%A6 这个字符原来的意思类似NOP指令,当送到列表机或终端机时,设备不需作任何的动作(不过有些设备会错误的打印或显示一个空白)。
失落夏天 2013-05-01
  • 打赏
  • 举报
回复
抱歉,刚才没看清问的。 首先这肯定不是系统计算的问题。 楼主可以尝试在32位和64位或者xp下使用exclipse编译。看结果。 我这边32位的win结果是 num=1...a(后面还有分隔符) num=-1...a(后面还有分隔符) 我觉得有可能是显示的问题。 楼主可以尝试一下吧这结果打印到一份文件里面看看。
lcf 2013-05-01
  • 打赏
  • 举报
回复
就是没win7。。不过这个肯定还是操作系统的关系啦。new String(buf, 0, num)才是正解
lcf 2013-05-01
  • 打赏
  • 举报
回复
vbox ubuntu x64 12.04 JVM7表示只有1个a
lcf 2013-05-01
  • 打赏
  • 举报
回复
win8 x64 JVM6 表示只有1个a
失落夏天 2013-05-01
  • 打赏
  • 举报
回复
fr.read(buf); 这里就已经把东西全读出来了。 后面的当然读不到了。。、
lcf 2013-05-01
  • 打赏
  • 举报
回复
mac用户表示只有1个a
fei1710 2013-05-01
  • 打赏
  • 举报
回复
不会这么神奇吧
tzguo1314 2013-05-01
  • 打赏
  • 举报
回复
没有刷出数据,out.flush
shine333 2013-04-30
  • 打赏
  • 举报
回复
至于为什么相同程序出现两个结果(当然这首先是程序写的有问题),我还要再看看
shine333 2013-04-30
  • 打赏
  • 举报
回复
read返回值代表读入缓存的长度,-1就代表什么都没到 所以,如果-1,直接停止 如果非负数,new String(buf, 0, num);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧