From 6c725333fa2dd02fcedce8022ba54166fc3973e3 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Mon, 23 Mar 2026 10:26:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E9=98=B6day10-=E5=AD=97=E8=8A=82?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E6=B5=81=E7=9A=84=E5=9F=BA=E6=9C=AC=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E4=BB=A5=E5=8F=8A=E4=BD=BF=E7=94=A8=E7=BC=93=E5=86=B2?= =?UTF-8?q?=E6=B5=81=E5=A4=8D=E5=88=B6=E6=96=87=E4=BB=B6=EF=BC=88=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E8=AF=BB=E5=86=99=E4=B8=80=E4=B8=AA=E5=AD=97=E8=8A=82?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/inmind/buffered_stream01/Demo01.java | 25 +++++++++-- .../com/inmind/buffered_stream01/Demo02.java | 45 +++++++++++++++++++ 2 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 javaSE-day10/src/com/inmind/buffered_stream01/Demo02.java diff --git a/javaSE-day10/src/com/inmind/buffered_stream01/Demo01.java b/javaSE-day10/src/com/inmind/buffered_stream01/Demo01.java index 7d376c4..2310f94 100644 --- a/javaSE-day10/src/com/inmind/buffered_stream01/Demo01.java +++ b/javaSE-day10/src/com/inmind/buffered_stream01/Demo01.java @@ -1,8 +1,6 @@ package com.inmind.buffered_stream01; -import java.io.BufferedInputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; +import java.io.*; /* 4个流本身是没有读写功能,都是基于昨天的字节流和字符流进行操作,所以,今天只要先区分到底是什么流,然后就调用对应流的api @@ -20,9 +18,30 @@ import java.io.FileNotFoundException; int read() :读取一个字节数据 int read(byte[] bytes) : 读取一个字节数组 + +字节缓冲输出流:BufferedOutputStream + 构造方法: + BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。 + 常用方法: + void write(int b) 将指定的字节写入缓冲的输出流。 + public void write(byte[] b) + void write(byte[] b, int off, int len) 从偏移量 off开始的指定字节数组写入 len字节到缓冲输出流。 */ public class Demo01 { public static void main(String[] args) throws Exception { + //创建流对象 + BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("a.txt")); + //调用写方法 + bos.write(97); + bos.write("我是谁我在哪".getBytes()); + bos.write("我在干嘛,哈哈".getBytes(),0,12); + + //释放资源 + bos.close(); + } + + + public static void testBufferedInputStream(String[] args) throws Exception { //IO流的操作 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("a.txt")); diff --git a/javaSE-day10/src/com/inmind/buffered_stream01/Demo02.java b/javaSE-day10/src/com/inmind/buffered_stream01/Demo02.java new file mode 100644 index 0000000..92f7688 --- /dev/null +++ b/javaSE-day10/src/com/inmind/buffered_stream01/Demo02.java @@ -0,0 +1,45 @@ +package com.inmind.buffered_stream01; + +import java.io.*; +import java.sql.Statement; + +public class Demo02 { + //使用字节缓冲输入输出流复制一个文件,并计算出时间(一次读写一个字节) + public static void main(String[] args) throws IOException { + /*FileInputStream fis = new FileInputStream("D:\\io_test\\upload\\1.jpg"); + FileOutputStream fos = new FileOutputStream("D:\\io_test\\upload\\2.jpg");*/ + BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\io_test\\upload\\1.jpg")); + BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\io_test\\upload\\3.jpg")); + + + long start = System.currentTimeMillis(); + int c;//用来保存读取的字节数据 + while ((c = bis.read()) != -1) { + bos.write(c); + } + long end = System.currentTimeMillis(); + + System.out.println("使用缓冲流复制文件花费:"+(end- start));//38 + + bis.close(); + bos.close(); + } + + + //使用原始的字节输入输出流复制一个文件,并计算出时间(一次读写一个字节) + public static void method1(String[] args) throws IOException { + FileInputStream fis = new FileInputStream("D:\\io_test\\upload\\1.jpg"); + FileOutputStream fos = new FileOutputStream("D:\\io_test\\upload\\2.jpg"); + long start = System.currentTimeMillis(); + int c;//用来保存读取的字节数据 + while ((c = fis.read()) != -1) { + fos.write(c); + } + long end = System.currentTimeMillis(); + + System.out.println("使用字节流复制文件花费:"+(end- start));//5880 + + fis.close(); + fos.close(); + } +}