开发者社区> 问答> 正文

FileInputStream读取文件不能读取全部内容

最近在学习java的输入流,用FileInputStream读取文件不能读取全部内容,都去的文件如下图:注意:文件只有3行!
screenshot
在myeclipse中的输入如下图:注意:输出只有2行!
screenshot
实在找不出哪里错了,还请不吝赐教
代码如下:

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();
            }
        }
    }
}

展开
收起
蛮大人123 2016-03-25 14:20:15 4143 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    你输出的时候用的是System.out.write()方法,write()方法和print()方法的区别是一个输出字符流,一个输出字节流。
    字符流有缓冲,即会把内容缓冲在内存中,只有flush()的时候才输出。
    所以你在while循环后面加个System.out.flush();即可全部输出了。。
    你可能会问为什么前面两行会输出,这就要看write()的源码了,你会发现 if ((b == '\n') && autoFlush){out.flush();}
    至此真相大白了吧。前两行后面有换行所以会自动flush()

    2019-07-17 19:14:17
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载