小浣熊仔仔 2015-12-18 06:30 采纳率: 100%
浏览 5153
已采纳

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

最近在学习java的输入流,用FileInputStream读取文件不能读取全部内容,都去的文件如下图:


注意:文件只有3行!!!!

读取的文件



在myeclipse中的输入如下图:

注意:输出只有2行!!!!

输出




实在找不出哪里错了,还请不吝赐教,非常感谢!

代码如下:


package firPrj;

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

  • 写回答

4条回答 默认 最新

  • 一缕清风007 2015-12-18 10:15
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵