Skip to content

Latest commit

 

History

History
99 lines (76 loc) · 5.53 KB

十八、JavaIO-文件字符流.md

File metadata and controls

99 lines (76 loc) · 5.53 KB

📖 青空的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使用。