美文网首页
[java]13、缓冲流

[java]13、缓冲流

作者: 史记_d5da | 来源:发表于2021-10-15 23:11 被阅读0次

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();
    }
}

相关文章

  • [java]13、缓冲流

    1、字节缓冲输出流 java.io.BufferedOutputStream extends OutputStre...

  • java-nio学习之java io比较

    java io 基本介绍 java nio和io区别 面向流与面向缓冲 IO是面向流的,NIO是面向缓冲区的。 J...

  • Java学习——day 17

    主要内容 缓冲流 转换流 字节数组流 数据流 对象流 笔记详情 1. 缓冲流 Java中的流可以分为节点流和处理流...

  • Java IO流(2)

    一、缓冲流概要   java缓冲流本身不具IO功能,只是在别的流上加上缓冲提高效率,像是为别的流装上一种包装。当对...

  • java学习笔记 i/o

    java在读取大文件上尽量使用缓冲流并且合理配置缓冲流大小这样性能会大大升高。 try{ FileInputStr...

  • IO系统

    内容梗概: Java流式输入/输出的原理 Java流类的分类 输入/输出流类 常见的节点流和处理流 文件流 缓冲流...

  • Java中的IO流

    Java中的IO流分类 输入IO流输入字节流(InputStream)处理流缓冲流(BufferedInputSt...

  • java基础之IO流

    IO流上:概述、字符流、缓冲区(java基础) IO流结构图 FilterInputStream、FilterOu...

  • IO和NIO区别

    IO是面向流的,NIO是面向缓冲区的;Java IO的各种流是阻塞的,Java NIO的非阻塞模式;Java NI...

  • IO流——字节流4种copy方式

    JAVA基本IO流框架 字节流整体可分为带缓冲区的流和不带缓冲区的流可分为逐字节复制的流和逐块复制的流(块其实就是...

网友评论

      本文标题:[java]13、缓冲流

      本文链接:https://www.haomeiwen.com/subject/hxhvoltx.html