解析java中的文件字符输入流

解析java中的文件字符输入流

1 含义

字符输入流的后缀为Reader,文件字符输入流的全名为FileReader

2 作用

以字符的形式对外部文件(磁盘上的文件)进行读取操作,并可以把读取到的内容根据实际情况进行处理

字符是就是我们之前所提到过的char类型,它可以数字,字母,下划线

3 如何用

3.1 使用方法

3.1 每次只读取一个字符文件
3.1.1 核心思路
a 声明一个文件字符输入流FileReader对象,并赋值为null
b 实例化FileReader对象并通过try…catch去处理异常
c 通过实例对象.read()方法去循环读取(返回值不为-1时就继续读取),读取的时候也需要处理异常
d 通过强转把ascil的数字转换成对应的字符
e 最后在finally语句中对文件字符输入流对象进行非空判断,若不为null则需要通过对象名.close()方法去关闭这个文件字符输入流(不关闭会造成资源的浪费),在关闭的时候也要去try…catch去捕获异常
3.1.2 示例代码
temp.txt文件内容

在这里插入图片描述

FileReaderTest类
package Work4;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderTest {
    public static void main(String[] args) {
        FileReader fr=null;
        try {
            fr=new FileReader("src/Work06/temp.txt");
            int readData=0;
            while((readData=fr.read())!=-1){
                System.out.print((char)readData);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fr != null) {
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.1.3 示例代码运行截图

在这里插入图片描述

3.2 以char数组读取后,打印有效信息(截取)
3.2.1 核心思路
a 声明一个文件字符输入流对象FileReader,并给其赋值为null
b 实例化文件字符输入流对象,需要try…catch捕获异常
c.建立一个较大的容量(长度)的char数组,通过read(chars)用于一次性获取char数组长度的元素(数量足够的情况下),若数量不够,把剩下的元素放入char数组,覆盖上一次的结果,使用read方法的时候需要去捕获异常
d 把read(chars)的返回值用一个变量去readLen(新数据/有效数据个数)去接收
e 然后在通过new String(chars,0,readLen)筛选得到有效数据(新数据),然后进行循环遍历打印即可
f.在finally语句中里面判断文件字符输入流对象,若不为空,就需要对象名.close()去进行关闭文件字节输入流这个操作,用close方法还需要去try…catch捕获异常
3.2.2 示例代码

temp.txt
在这里插入图片描述

FileReaderTest类

package Work4;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class FileReaderTest {
    public static void main(String[] args) {
        FileReader fr=null;
        try {
            fr=new FileReader("src/Work06/temp.txt");
            int readLen=0;
            char[] chars=new char[8];
            while((readLen=fr.read(chars))!=-1){
                System.out.print(new String(chars,0,readLen));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fr != null) {
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

3.2.3 示例代码运行截图

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值