(1)文件字符输入流  Reader   FileReader

IO流:字符流_输出流

public class FileReaderTest1 {
    public static void main(String[] args) {
        try {
            // 1. 创建一个文件字符输入流管道与源文件接通
            Reader fr = new FileReader("io-app2\\src\\a01.txt");

            // 2. 读取文本文件的内容
            int c; // 记住单次读取的字符编号
            while ((c = fr.read()) != -1) {
                System.out.print((char) c);
            }
            // 3. 每次读取多个字符
            char[] buffer = new char[3];
            int len; // 记住每次读取了多少个字符
            while ((len = fr.read(buffer)) != -1) {
                // 将读取的字符输出
                System.out.print(new String(buffer, 0, len));
            }
             // 关闭文件流
            fw.close();
           
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.

(2)文件字符输出流  Writer   FileWriter

IO流:字符流_输出流_02

public class FileWriterTest {
    public static void main(String[] args) {
        try {
            // 0. 创建一个文件字符输出流管道与目标文件接通。
            // 覆盖管道
            // Writer fw = new FileWriter("io-app2/src/itheima02out.txt");
            // 追加数据的管道
            Writer fw = new FileWriter("io-app2/src/a02out.txt", true);

            // 1. public void write(int c): 写一个字符出去
            fw.write('a');
            fw.write(97);
            fw.write('示'); // 写三个字符出去
            fw.write("\r\n"); // 换行

            // 2. public void write(String c): 写一个字符串出去
            fw.write("我爱你中国abc");
            fw.write("\r\n");

            // 3. public void write(String c, int pos, int len): 写字符串的一部分出去
            fw.write("我爱你中国abc", 0, 5);
            fw.write("\r\n");

            // 4. public void write(char[] buffer): 写一个字符数组出去
            char[] buffer = {'安', '好', '世', '界', 'a', 'b', 'c'};
            fw.write(buffer);
            fw.write("\r\n");


            // 5. public void write(char[] buffer, int pos, int len): 写字符数组的一部分
            char[] buffer = {'安', '好', '世', '界', 'a', 'b', 'c'};
            fw.write(buffer, 0, 2);
            
             // 关闭文件流
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.

字符输出流的注意事项:

字符输出流写出数据后,必须刷新流(flush),或者关闭流(包含刷新操作),写出的数据才有效。

这是因为写的数据先放进缓冲区,等通道关闭之后再写进文件。可以节省资源。缓冲区装满会自动刷新。