IO字符流

IO字符流

在字节流中,因为中文字符使用多个字节且不同编码表有区别,因此可能会出现乱码。用字符流可以有效解决该问题。

字符输入流Reader

方法:read、read(char[] chars)、close,作用与字节流类似

一个子类

文件字节输入流

继承关系:

FileReader extends InputStreamReader extends Reader

作用:把文件以字符形式从硬盘读入内存

构造方法:

FileReader(String filename)

FileReader(File file)

作用:

1.创建一个FileReader对象;

2.把该对象指向要读的文件

使用步骤

1.创建一个FileReader对象,构造方法传递数据读取目的地

2.调用FileReader对象的read方法,读取数据

3.释放资源(调用close方法)

代码练习

public static void main(String[] args) throws IOException {
    File file = new File("Month" + File.separator + "src" + File.separator + "LearnIO" + File.separator + "a.txt");
    FileReader fileReader = new FileReader(file);
    char[] cr = new char[1024];
    while(fileReader.read(cr) != -1) {
        System.out.print(cr);
    }

    fileReader.close();
}

字符输出流Writer

方法:write、write(char[] chars)、write(String string)、flush、close,作用与字节流类似

一个子类

文件字节输出流

继承关系: FileWriter extends OutputStreamWriter extends Writer

作用:把文件以字符形式从内存写入缓冲区

构造方法: FileWriter(String filename)

FileWriter(File file)

作用: 1.创建FileWriter对象 2.根据构造方法中传递的文件/文件路径,创建一个空文件 3.把对象指向创建好的文件

使用步骤

1.创建一个FileWriter对象,构造方法传递数据读取目的地 2.调用FileWriter对象的write方法,将数据写入缓冲区

3.调用flush方法,把内存缓冲区数据刷新到文件中

(该方法不会关闭流,流对象可以继续使用)

4.释放资源(调用close方法)

代码练习

public static void main(String[] args) {
    File file = new File("Month" + File.separator + "src" + File.separator + "LearnIO" + File.separator + "a.txt");
    FileWriter fileWriter = null;

    try {
        fileWriter = new FileWriter(file, true);
        String str = "java程序";
        fileWriter.write(str);
        fileWriter.flush();
    } catch (IOException var12) {
        var12.getStackTrace();
    } finally {
        if (fileWriter != null) {
            try {
                fileWriter.close();
            } catch (IOException var11) {
                var11.getStackTrace();
            }
        }

    }

追加与换行

FileWriter类的构造方法

FileWriter(String pathname ,boolean append)

FileWriter(File file ,boolean append)

参数boolean append 是追加开关

true: 创建对象不会创建文件,在源文件后追加写入数据

flase: 覆盖原文件

换行符号: win: linux:/n mac:/r

原文地址:https://www.cnblogs.com/susexuexi011/p/13956057.html