使用字符流读写文件

1.字符流的介绍: 字符流 = 字节流 + 编码表 2.中文的字节存储方式: 用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文

1、使用字符流类  读文本文件的基本步骤:

  • 引入相关类
  • 构造一个 BufferedReader 对象
  • 利用 BufferedReader 类的方法读取文本文件数据
  • 关闭相关的流对象

 字符流写数据的几种方式

使用字符流读写文件_第1张图片

 刷新、关闭方法

 

public class OutputStreamWriterDemo {
    public static void main(String[] args) throws IOException {
        OutputStreamWriter out= new OutputStreamWriter(new FileOutputStream("d://a.txt"));

        //void write(int c)://写一个字符
        out.write(97);
        out.write(98);
        out.write(99);

        //void writ(char[] cbuf)://写入一个字符数组
        char[] chs = {'a', 'b', 'c', 'd', 'e'};
        out.write(chs);

        //void write(char[] cbuf, int off, int len):写入字符数组的一部分
        out.write(chs, 0, chs.length);
        out.write(chs, 1, 3);

        //void write(String str):写一个字符串
        out.write("abcde");

        //void write(String str, int off, int len):写一个字符串的一部分
        out.write("abcde", 0, "abcde".length());
        out.write("abcde", 1, 3);

        //释放资源
        out.close();
    }
}

字符流读数据的第2种方式

方法介绍

 

public class InputStreamReaderDemo {
    public static void main(String[] args) throws IOException {
   
        InputStreamReader in= new InputStreamReader(new FileInputStream("D://a.txt"));

        //int read():一次读一个字符数据
        int ch;
        while ((ch=in.read())!=-1) {
            System.out.print((char)ch);
       }

        //int read(char[] cbuf):一次读一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while ((len = in.read(chs)) != -1) {
            System.out.print(new String(chs, 0, len));
        }

        //释放资源
        in.close();
    }
}

字符缓冲流

字符缓冲流介绍
BufferedWriter: 将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途
BufferedReader: 从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途

构造方法

public class BufferedStreamDemo01 {
    public static void main(String[] args) throws IOException {
        //BufferedWriter(Writer out)
        BufferedWriter b1= new BufferedWriter(new FileWriter("D://w.txt"));
        b1.write("hello\r\n");
        b1.write("world\r\n");
        b1.close();

        //BufferedReader(Reader in)
        BufferedReader b2= new BufferedReader(new FileReader("D://w.txt"));

        //一次读取一个字符数据
        int ch;
        while ((ch=b2.read())!=-1) {
            System.out.print((char)ch);
        }

        //一次读取一个字符数组数据
        char[] chs = new char[1024];
        int len;
        while ((len=b2.read(chs))!=-1) {
            System.out.print(new String(chs,0,len));
        }

        b2.close();
    }
}

你可能感兴趣的:(java)