📖 青空的B站课程

📅 2024年4月20日

字符流

⭐️ 字节流和字符流不一样,它是具体的一个字符一个字符来进行操作,它只适合读取纯文本的文件,不适合读取媒体文件,使用 FileReader

     public static void main(String[] args) {
         try(FileReader fileReader = new FileReader("test.txt")){
             fileReader.skip(2);
             System.out.println((char) fileReader.read()); //和字节流差不多
         }catch (IOException e){
             throw  new RuntimeException();
         }
     }

⭐️ 但是字符流如果要读取多个的字符就需要使用到 char[]

     public static void main(String[] args) {
         try(FileReader fileReader = new FileReader("test.txt")){
             char[] chars = new char[10]; //创建char数组
             fileReader.read(chars); //读取
             System.out.println(chars); //输出chars字符
          }catch (IOException e){
             throw  new RuntimeException();
         }
     }

⭐️ 有输入就会有输出输出使用 FileWrite,这里是演示了一个输入一个 char数组

     public static void main(String[] args) {
         try(FileWriter fileWriter = new FileWriter("test.txt",true)){ //可以追加
             fileWriter.write("HelloWorld!".toCharArray()); //转换成Char数组
          }catch (IOException e){
             throw  new RuntimeException();
         }
     }

1️⃣ 它还有个 append,它和 write差不多,但是 append支持像 StringBuilder那样的链式调用,返回的是 Writer对象本身

     fileWriter.append("你好").append("我是").append("lbw");

主要用法查询

当然,以下是一个关于Java中 FileReaderFileWriter类(字符流)的方法及使用说明的表格:

类名 方法名称 描述
FileReader
构造方法 FileReader(File file) 创建一个 FileReader对象,用于从指定File对象表示的文件读取字符
FileReader(String fileName) 创建一个 FileReader对象,用于从指定路径的文件读取字符
读取方法 int read() 读取一个字符,返回读取到的字符(如果是EOF则返回-1)
int read(char[] cbuf) 读取字符到字符数组 cbuf中,返回实际读取的字符数
int read(char[] cbuf, int off, int len) 从文件读取 len个字符到 cbuf数组的off偏移量处开始的位置
关闭方法 void close() 关闭此文件读取流并释放与之关联的所有系统资源
类名 方法名称 描述
FileWriter
构造方法 FileWriter(File file) 创建一个 FileWriter对象,用于向指定File对象表示的文件写入字符
FileWriter(String fileName) 创建一个 FileWriter对象,用于向指定路径的文件写入字符
写入方法 void write(int c) 将指定的字符写入此输出流
void write(char[] cbuf) 将指定字符数组中的所有字符写入此输出流
void write(char[] cbuf, int off, int len) 将指定字符数组的一部分(从off偏移量开始,长度为 len)写入此输出流
void write(String str) 将指定字符串的所有字符写入此输出流
void write(String str, int off, int len) 将指定字符串的一部分(从off偏移量开始,长度为 len)写入此输出流
关闭方法 void close() 关闭此文件输出流并释放与此流相关联的所有系统资源

此外,这里有一个使用 FileReaderFileWriter实现文件内容复制的简单示例:

 public void copyFileUsingCharacterStream(String source, String destination) throws IOException {
     FileReader reader = new FileReader(source);
     FileWriter writer = new FileWriter(destination);
 ​
     int c;
     while ((c = reader.read()) != -1) {
         writer.write(c);
     }
 ​
     reader.close();
     writer.close();
 }

在这个例子中,首先创建 FileReaderFileWriter对象分别指向源文件和目标文件,然后逐字符读取并写入到另一个字符流中,直到读取完毕。最后,关闭两个流以释放资源。注意,字符流默认使用平台的默认字符编码进行读写操作。如果需要指定特定的字符编码,应使用 InputStreamReaderOutputStreamWriter配合 FileInputStreamFileOutputStream使用。