[java]13、缓冲流

2021-10-15  本文已影响0人  史记_d5da

1、字节缓冲输出流

java.io.BufferedOutputStream extends OutputStream
BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。

public class Demo01OutputStream {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("a.txt");
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        bos.write("我吧树协议内部缓冲".getBytes());
        bos.flush();
        bos.close();
    }
}

2、字节缓冲输入流

1)、java.io.BufferedInputStream extends InputStream
BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

public class Demo02InputStream {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("/Users/shiji/study/java/itcast/day02-code/src/com/sj/demo01/BufferedStream/a.txt");
        BufferedInputStream bis = new BufferedInputStream(fis);
//        int len = 0;
//        while ((len = bis.read()) != -1) {
//            System.out.println(len);
//        }
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = fis.read(bytes)) != -1) {
            System.out.println(new String(bytes , 0, len));
        }
        bis.close();
    }
}

2)、copyFile

public class Demo02CopyFile {
    public static void main(String[] args) throws IOException {
        long b = System.currentTimeMillis();
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("img.png"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("a.png"));
        int len = 0;
//        while ((len = bis.read()) != -1) {
//            bos.write(len);
//        }
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes))!= -1) {
            bos.write(bytes, 0, len);
        }
        bos.close();
        bis.close();
        long e = System.currentTimeMillis();
        System.out.println(e - b);
    }
}

3、字符缓冲输出流

java.io.BufferedWriter extends Writer
BufferedWriter:字符缓冲输出流
BufferedWriter(Writer out) 创建一个使用默认大小输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz) 创建一个使用给定大小输出缓冲区的新缓冲字符输出流。

public class Demo03BufferedWriter {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
        for (int i = 0; i < 10 ; i++) {
            bw.write("你好啊aa");
//            bw.write("\n");
            bw.newLine(); // 换行
        }
        bw.flush();
        bw.close();
    }
}

4、字符缓冲输入流

java.io.BufferedReader extends Reader
BufferedReader:字符缓冲输入流
构造方法:
BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。

public class Demo04BufferedReader {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("a.txt"));
//        String line = br.readLine(); // 读取一行数据
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        br.close();
    }
}

5、练习给字符排序

/*
* 3.输出流上度
* 2.发送该消息的日期和时间
* 5.服务器域名、端口号
* 1.请求体的类型
* 4.能够接受的字符集
* */
public class Demo05Test {
    public static void main(String[] args) throws IOException {
        HashMap<String, String> map = new HashMap<>();
        BufferedReader br = new BufferedReader(new FileReader("c.txt"));
        BufferedWriter bw = new BufferedWriter(new FileWriter("d.txt"));
        String line;
        while ((line = br.readLine()) != null) {
            String[] arr =  line.split("\\.");
            // 把切割好的序号和文本内容存储到hashMap中(key序号是有序的,会自动排序1、2、3、4)
            map.put(arr[0], arr[1]);
        }
        for (String key : map.keySet()) {
            String value = map.get(key);
            line = key + "." + value;
            bw.write(line);
            bw.newLine();
        }
        bw.close();
        br.close();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读