文件读取---FileReader

读取文件内容,而且是按照字符读取,一个字母算一个字符,一个汉字也算一个字符,但是回车是一个字符,换行是一个字符,\r\n(回车换行)是会被读成两个字符的。

这个类很直接,实例化定义的时候直接将文件路径为构造参数就可以,或者是从其他类里拿到的File对象也行。

FileReader有两个读取数据的方法,一个是read() 另一个是read(char[] cbuf, int offset, int length)参数offset和length可以省略。

read()就是从文件中一个字符一个字符的读取,代码如下:

FileReader reader = new FileReader(file);
int cint;
while((cint=reader.read()) != -1){
    System.out.print((char)cint);
}

read(char[] cbuf, int offset, int length)就是从文件中一下读取多个字符把数组装满,代码如下:

        FileReader reader = new FileReader(file);
        char[] c = new char[1024];
        int len;
         while((len=reader.read(c)) != -1){
             if (len!=1024){
                 c = Arrays.copyOf(c, len);
             }
            System.out.print(c);
        }

这样可以一次读取缓冲多个字符减少IO读次数,毕竟IO操作是最耗时的,能用内存空间换取读取速度还是值得的。

代码中有个 Arrays.copyOf(c, len); 操作,是因为最后一次读取的时候可能剩下的文件内容不够1024个字符了,这个时候就要按照读取到的字符数量从数组中截取内容,否则数组中后续其他内容是上次读取的字符数据,没必要再重复处理了。

这是按照字符处理,如果读取的文件不是文本文件,例如图片、视频、zip等等,那就要按照字节读取,FileReader: 臣妾做不到啊!“FileReader is meant for reading streams of characters. For reading streams of raw bytes, consider using a FileInputStream.” 官方告诉我们要去找他兄弟 FileInputStream。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值