最近在学习java的输入流,用FileInputStream读取文件不能读取全部内容,都去的文件如下图:注意:文件只有3行!
在myeclipse中的输入如下图:注意:输出只有2行!
实在找不出哪里错了,还请不吝赐教
代码如下:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FileReaderClass {
public static void main(String []args){
FileReaderClass fileReader = new FileReaderClass();
System.out.println("readByByte:");
fileReader.readByByte("c:\\file.txt");
}
private void readByByte(String fileName){
InputStream in = null;
try{
in = new FileInputStream(fileName);
int tem = -1;
while((tem = in.read()) != -1){
System.out.write(tem);
}
} catch(IOException e){
e.printStackTrace();
} finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
你输出的时候用的是System.out.write()
方法,write()
方法和print()
方法的区别是一个输出字符流,一个输出字节流。
字符流有缓冲,即会把内容缓冲在内存中,只有flush()
的时候才输出。
所以你在while
循环后面加个System.out.flush()
;即可全部输出了。。
你可能会问为什么前面两行会输出,这就要看write()的源码了,你会发现 if ((b == '\n') && autoFlush){out.flush();}
至此真相大白了吧。前两行后面有换行所以会自动flush()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。