第8章-第5节-Java中的字符流

1、字节流可以进行任意文件类型的读取(文本文件,图片,音频,视频等),因为任意文件最终都是以字节存储在计算机中。但是,其实我们大多数的情况下,读取的都是纯纯的文本文件,那么以字节来读取显然效率不是那么的高,那么,此时如果以字符为单位来进行读取,效率会高很多,所以,就出现了字符流,接下来,我们就来学习字符流。

2、转换流:转换流是字节流到字符流之间的桥梁。转换流 = 字节流 + 编码集  

1)、构造方法:

方法名 说明
InputStreamReader(InputStream in) 使用默认字符编码创建InputStreamReader对象
InputStreamReader(InputStream in,String chatset) 使用指定的字符编码创建InputStreamReader对象
OutputStreamWriter(OutputStream out) 使用默认字符编码创建OutputStreamWriter对象
OutputStreamWriter(OutputStream out,String charset) 使用指定的字符编码创建OutputStreamWriter对象

2)、案例:

        // 1. 定义一个转换输入流                 
        InputStreamReader reader =
                new InputStreamReader(new FileInputStream("test\\听妈妈的话.txt"), "UTF-8");
        // 每次读取一个字符
        int read = reader.read();
        System.out.println((char)read);
        reader.close();

        // 2. 定义一个转换输出流
        OutputStreamWriter writer =
                new OutputStreamWriter(new FileOutputStream("test\\听妈妈的话.txt", true), "UTF-8");
        writer.write("\n");
        writer.write('狠');
        writer.close();

 3、字符输出流:FileWriter是转换流的子类,进行了更好的封装,使我们在操作字符文件的时候更加的方便,优雅

1)、构造方法:

方法名 说明
public FileWriter(String fileName) 指向具体的文件,覆写,使用系统默认的编码
public FileWriter(String fileName, boolean append) 指向具体的文件,追加写,使用系统默认的编码
public FileWriter(File file) 指向具体的文件,覆写,使用系统默认的编码
public FileWriter(File file, boolean append) 指向具体的文件,追加写,使用系统默认的编码

2)、常用方法:

方法名 说明
void write(int c) 写一个字符
void write(char[] buf) 写入一个字符数组
void write(char[] buf, int off, int len) 写入字符数组的一部分
void write(String str) 写一个字符串
void write(String str, int off, int len) 写一个字符串的一部分
方法名 说明
flush() 刷新流,之后还可以继续写数据
close() 关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据

3)、案例:

        // 1. 创建字符输出流
        FileWriter writer = new FileWriter("test\\听妈妈的话.txt");
        // 写出单个字符
        writer.write('我');

        // 写出一个字符数组
        char[] chs = {'爱', '你'};
        writer.write(chs);

        // 刷新流,将缓冲区的内容写出到文件
        writer.flush();

        // 写出一个字符串
        writer.write("真真的");

        writer.close();

 4、字符输入流:

1)、构造方法:

方法名 说明
public FileReader(String fileName) 指向具体的文件,使用系统默认的编码
public FileReader(File file) 指向具体的文件,使用系统默认的编码

2)、常用方法:

方法名 说明
int read() 一次读一个字符数据
int read(char[] cbuf) 一次读一个字符数组数据

3)、案例:

        // 1. 定义一个字符输入流
        FileReader reader = new FileReader("day16_io\\aa.txt");
        
        // 每次读取一个字符
        int read = reader.read();
        System.out.println((char)read);

        // 每次读取一个字符数组
        char[] chs = new char[16];
        int len = reader.read(chs);
        String str = new String(chs, 0, len);
        System.out.println(str);
        
        // 2. 关闭资源
        reader.close();

 本电子书目录:《Java基础的重点知识点全集》

你可能感兴趣的:(java)