阶段二32_面向对象高级_IO[BufferedWriter,BufferedReader,IO流总结]

知识:

1.字符缓冲输出流和字符缓冲输入流: BufferedWriter,BufferedReader
2.BufferedWriter:void newLine()
3.BufferedReader:public String readLine() 

一.字符缓冲流

1.字符缓冲输出流

BufferedWriter:将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,
可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途
BufferedWriter(Writer out)

入门代码实现:

public class CharStreamDemo10 {
    public static void main(String[] args) throws IOException {
        //字符缓冲输出流
        BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\a.txt"));

        //写出数据
        //实际写出的是97对应的字符a
        bw.write(97);
        bw.write("\r\n");
        //实际写出的是97 - 101 对应的字符 abcde
        char [] chars = {97,98,99,100,101};
        bw.write(chars);
        bw.write("\r\n");
        //实际写的是abc
        bw.write(chars,0,3);
        bw.write("\r\n");
        //会把字符串的内容原样写出
        bw.write("黑马程序员");
        bw.write("\r\n");
        //会把字符串的一部分写出 abcde
        String line = "abcdefg";
        bw.write(line,0,5);
        bw.flush();

        bw.close();
    }
}

2.字符缓冲输入流

BufferedReader:从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,
可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途
BufferedReader(Reader in)

入门代码实现:

public class CharStreamDemo9 {
    public static void main(String[] args) throws IOException {
        //字符缓冲输入流
        BufferedReader br = new BufferedReader(new FileReader("charstream\\a.txt"));
        //读取数据
        char [] chars = new char[1024];
        int len;
        while((len = br.read(chars)) != -1){
            System.out.println(new String(chars,0,len));
        }
        br.close();
    }
}

3.newLine()和 readLine()
概述:

BufferedWriter:
void newLine():
写一行行分隔符,行分隔符字符串由系统属性定义
 
BufferedReader:
public String readLine() :
读一行文字。 结果包含行的内容的字符串,不包括任何行终止字符,如果流的结尾已经到达,则为null

代码案例实现:

public class CharStreamDemo11 {
    public static void main(String[] args) throws IOException {
        //1.字符缓冲流的特有功能,字符缓冲输出流BufferedWrite:newLine跨平台的换行符
        //创建对象
        BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\a.txt"));
        //写出数据
        bw.write("黑马程序员666");
        //跨平台的回车换行
        bw.newLine();
        bw.write("abcdef");
        //跨平台的回车换行
        bw.newLine();
        bw.write("-------------");
        //刷新流
        bw.flush();
        //释放资源
        bw.close();
        
        //2.字符缓冲流的特有功能,字符缓冲输入流BufferedReader: readLine 读一整行
        //创建对象
        BufferedReader br = new BufferedReader(new FileReader("charstream\\a.txt"));
        //使用循环来进行改进
        String line;
        //可以读取一整行数据。一直读,读到回车换行为止。
        //但是他不会读取回车换行符。
        while((line = br.readLine()) != null){
            System.out.println(line);
        }
        //释放资源
        br.close();
    }
}

4.案例:读取文件中的数据排序后再次写到本地

需求:
读取文件中的数据,排序后再次写到本地文件 [sort文件内容: 7 3 2 1 4 5 8 6 9 10 ]
读取数据
将数据排序
写回本地

代码实现:

public class CharStreamDemo14 {
    public static void main(String[] args) throws IOException {
        //需求:读取文件中的数据,排序后再次写到本地文件
        //分析:
        //特别注意:输出流一定不能写在这里,因为会清空文件中的内容
        //BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\sort.txt"));
        
        //1.要把文件中的数据读取进来。
        BufferedReader br = new BufferedReader(new FileReader("charstream\\sort.txt"));
        String line = br.readLine();
        System.out.println("读取到的数据为" + line);
        br.close();
        //2.按照空格进行切换
        String[] split = line.split(" ");//9 1 2 5 3 10 4 6 7 8
        //3.把字符串类型的数组变成int类型
        int [] arr = new int[split.length];
        //遍历split数组,可以进行类型转换。
        for (int i = 0; i < split.length; i++) {
            String smallStr = split[i];
            //类型转换
            int number = Integer.parseInt(smallStr);
            //把转换后的结果存入到arr中
            arr[i] = number;
        }
        //4.排序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        //5.把排序之后结果写回到本地 1 2 3 4...
        BufferedWriter bw = new BufferedWriter(new FileWriter("charstream\\sort.txt"));
        //写出
        for (int i = 0; i < arr.length; i++) {
            bw.write(arr[i] + " ");
            bw.flush();
        }
        //释放资源
        bw.close();
    }
}

二.IO流小结
IO流总结图
阶段二32_面向对象高级_IO[BufferedWriter,BufferedReader,IO流总结]_第1张图片

三.更多精彩内容
http://www.gxcode.top/code
阶段二32_面向对象高级_IO[BufferedWriter,BufferedReader,IO流总结]_第2张图片
阶段二32_面向对象高级_IO[BufferedWriter,BufferedReader,IO流总结]_第3张图片

你可能感兴趣的:(阶段二Java,java,BufferedWriter,BufferedReader)