io流-字符流和字节输入流(Reader)

字符流

当使用字节流读取文本文件时 会出现一些小问题 就是当我们遇到中文字符时 可能不会显示完成的字符 那时以为一个中文字符可能占用多个字节存储 所以java提供一些字符流类 以字符为单位读写数据 专门用于处理文本文件

字节输入流(Reader)

Reader抽象类是表示用于读取字符流的所有类的超类 可以读取字符信息到内存中 它是隶属于java.io包下

共性功能方法

public void close():关闭此流并释放与此流相关联的任何系统资源
public int read():从输入读取一个字符
public int read(Char[] cbuf):从输入流中读取一些字符 并将它们存储到字符数组cbuf中

子类FileReader

FileReader

FileReader:文件字符输入流

作用:把硬盘文件中的数据以字符的方式读取到内存中

构造方法

FileReader(String fileName)
FileReader(File file)

参数

String fileName 文件的路径

File file一个文件

FileReader构造方法的作用:

1.创建一个FileReader对象

2.会把FileReader对象指向要读取的文件

字符输入流的使用步骤:

1.创建FileReader对象 构造方法中绑定要读取的数据源

2.使用FileReader对象中的方法read读取文件

3.释放资源

案例:读取E盘下的file文件夹内的b.txt的字符

 有中文、英文和数组

读取一个字符代码:

复制代码
public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("E:\\file\\b.txt");

        int read = fr.read();
        System.out.println((char)read);

        fr.close();
    }
复制代码

运行结果:

 读取全部字符的代码:

复制代码
 public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("E:\\file\\b.txt");

        int len=0;
        while ((len=fr.read())!=-1){
            System.out.println((char)len);
        }

        fr.close();
    }
复制代码

运行结果

 使用char数组读取字符代码:

复制代码
  public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("E:\\file\\b.txt");
        char[] chars=new char[1024];
        int len=0;
        while ((len=fr.read(chars))!=-1){
            /*
            String类的构造方法
            String(char[] value)把字符数组转换为字符串
            String(char[] value,int offset,int count)把字符数组的一部分转换为字符串 offset数组的开始索引 count转换的个数
             */
            System.out.println(new String(chars,0,len));
        }

        fr.close();
    }
复制代码

运行结果:

posted @ 2022-10-17 10:51  想见玺1面  阅读(139)  评论(0编辑  收藏  举报