IO流之 字符流 BufferedReader,Buffered

2019-08-17  本文已影响0人  测试员

BufferedReader

*read():
    将字节转化成字符,一次性将若干字符读到缓存区,逐个返回给程序,降低读  文件的次数,提高效率。
*readLine():
    读取一行字符,不包括换行符。遇到结束标记返回 null;

BufferedWriter

*write():将字符转化成字节,方法写出字符时先写到缓冲区,缓冲区满时一次性写到文件上并清空缓冲区,降低写文件的次数,提高效率。
*newLine():
    输出一个可跨平台的回车换行符号。

可以生成带行号的输入流

*LineNumberReader,LineNumberInputStream。
    getLineNumber():获取行号;
    setLineNumber():设置起始行号;

使用指定码表读写字符

    例:(低效率)
    字节流转换字符流 fisr = new 字节流转换字符流(new 字节流("目标路径"),"指定编码");
    Eg: 
    InputStreamReader fisr = new InputStreamReader(new FileInputStream("aaa.txt"),"uutf-8");
    例:(高效率)再套个缓冲区
    缓冲区字符流 br = 缓冲区字符流(new 字节流转换字符流(new 字节流("目标路径"),"指定编码"));
    Eg: 
    BufferedReader br= BufferedReader(new InputStreamReader(new FileInputStream("aaa.txt"),"uutf-8"));

    package com.io.learn;
    
    import java.io.*;
    import java.util.ArrayList;

文件与集合转换练习

    public class 字符流练习 {
        public static void main(String[] args) throws ClassNotFoundException, IOException {
            final File target = new File("NewFile1.txt");
            final ArrayList<String> array = new ArrayList<>();
            array.add("我是一个粉刷匠");
            array.add("粉刷本领特别强");
            array.add("我要把那新房子");
            array.add("刷的非常的漂亮");
            listToFile(target,array);
            ArrayList<String> new_list = new ArrayList<>();
            fileToList(target,new_list);
            for (String elmt : new_list) {
                System.out.println("elmt = " + elmt);
            }
        }

集合转文件

        /**
        * 集合转文件
        * @param target
        * @param list
        */
        public static void listToFile(File target, ArrayList<String> list) {
            try (BufferedWriter writer = new BufferedWriter(new FileWriter(target))) {
                if (list != null && list.size() > 0) {
                    for (String  str : list) {
                        writer.write(str);
                        writer.newLine();
                        writer.flush();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

文件转集合

        /**
        * 文件转集合
        * @param target
        * @param list
        */
        public static void fileToList(File target, ArrayList<String> list) {
            try (BufferedReader reader = new BufferedReader(new FileReader(target))) {
                String len;
                while((len = reader.readLine())!= null){
                    list.add(len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
    }
上一篇 下一篇

猜你喜欢

热点阅读