天天看点

IO中的BufferedWriter和BufferedReader以及读取时出现乱码的问题

IO中的BufferedWriter和BufferedReader以及读取时出现乱码的问题

  1. BufferedWriter作用:

    将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

其有哪些方法:

close() : 关闭此流,但要先刷新它。

flush() : 刷新该流的缓冲。

newLine() : 写入一个行分隔符。

write(char[] cbuf, int off, int len) : 写入字符数组的某一部分。

write(int c) : 写入单个字符。

write(String s, int off, int len) : 写入字符串的某一部分。

  1. BufferedReader作用:

读取文本文件 ,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。

实战代码:

public class Test {

    public static void main(String[] args) throws Exception {

        //BufferedWriter将字符写入到文件中
        FileWriter fw = new FileWriter("E:\\Buffered.txt");//创建一个文件
        BufferedWriter bufw = new BufferedWriter(fw);
        bufw.write("hello world");
        bufw.newLine(); //作用是换行
        bufw.write("this is test");
        bufw.newLine();
        bufw.write("你好,这里是测试!");
        bufw.flush();
        bufw.close();

        //读取文件,然后进行转码,防止出现乱码的问题
        InputStreamReader isr = new InputStreamReader(new FileInputStream("E:\\Buffered.txt"), "UTF-8");
        //创建字符缓冲输入流对象
        BufferedReader br = new BufferedReader(isr);
        //读数据
        //一次读取一个字符数组
        char[] chs = new char[1024];
        int len = 0;
        while ((len = br.read(chs)) != -1) {
            System.out.println(new String(chs, 0, len));
        }
        //释放资源
        br.close();
    }
    }
           

查看运行结果:

IO中的BufferedWriter和BufferedReader以及读取时出现乱码的问题

查看E盘是否成功创建了这个文件:

IO中的BufferedWriter和BufferedReader以及读取时出现乱码的问题

成功!!!