字节流缓冲区:
1、BufferedInputStream
构造函数(以字节流为基础进行操作):
常用方法:
代码实例:
1 package InputOutput;
2
3 import java.io.BufferedInputStream;
4 import java.io.FileInputStream;
5 import java.io.IOException;
6
7 public class BufferedInputStreamDemo {
8 public static void main(String[] args) throws IOException {
9 // 指定文件路径文件路径要准确,文件夹缺失或文件缺失会报错
10 String path = "E:/JavaCodeDemo/InputOutput/FileXXXStream/Reader/Ace.jpg";
11 // 创建字节流输入对象
12 FileInputStream in = new FileInputStream(path);
13 // 创建缓冲区
14 BufferedInputStream bin = new BufferedInputStream(in);
15 // 写入数据,读到最后会返回-1
16 // 方法一
17 // int flag1 = -1;
18 // while ((flag1 = bin.read()) != -1) {
19 // System.out.println(flag1);
20 // }
21 // 方法二(推荐)
22 byte[] b = new byte[1024];
23 int flag2 = -1;
24 while ((flag2 = bin.read(b, 0, b.length)) != -1) {
25 System.out.println(flag2);
26 }
27
28 }
29 }
2、BufferedOutinputStream
构造方法:
主要方法:
代码实例:
1 package InputOutput;
2
3 import java.io.BufferedOutputStream;
4 import java.io.FileNotFoundException;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.io.OutputStream;
8
9 public class BufferedOutStreamDemo {
10 public static void main(String[] args) throws IOException {
11 // 指定文件路径文件路径要准确,文件不存在会自动创建,但是路径不能缺失
12 String path = "E:/JavaCodeDemo/InputOutput/FileXXXStream/Writer/writer.txt";
13 // 创建字节流输出对象,true代表在文本末尾添加数据,而不是每次写入都删除后重新写入数据
14 FileOutputStream out = new FileOutputStream(path, true);
15 // 创建输出缓冲区
16 BufferedOutputStream Bout = new BufferedOutputStream(out);
17 // 调用方法写入数据
18 byte[] b = "你好,helloWorld".getBytes();
19 Bout.write(b, 0, b.length);
20 Bout.flush();
21 Bout.close();
22 }
23 }
3、缓冲区实现复制文件
代码实例:
1 package InputOutput;
2
3 import java.io.BufferedInputStream;
4 import java.io.BufferedOutputStream;
5 import java.io.FileInputStream;
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8
9 public class BufferInOutputStreamDemo {
10 public static void main(String[] args) throws IOException {
11 // 指定文件路径文件路径要准确,文件夹缺失或文件缺失会报错
12 String path1 = "E:/JavaCodeDemo/InputOutput/FileXXXStream/Reader/Ace.jpg";
13 // 创建字节流输入对象
14 FileInputStream in = new FileInputStream(path1);
15 // 创建缓冲区
16 BufferedInputStream Bin = new BufferedInputStream(in);
17 // 指定文件路径文件路径要准确,文件不存在会自动创建,但是路径不能缺失
18 String path2 = "E:/JavaCodeDemo/InputOutput/FileXXXStream/Writer/Ace.jpg";
19 // 创建字节流输出对象,true代表在文本末尾添加数据,而不是每次写入都删除后重新写入数据
20 FileOutputStream out = new FileOutputStream(path2, true);
21 // 创建输出缓冲区
22 BufferedOutputStream Bout = new BufferedOutputStream(out);
23 // 调用方法读取数据
24 int flag = -1;
25 byte[] b = new byte[1024];
26 while ((flag = Bin.read(b)) != -1) {
27 // 调用方法写数据
28 Bout.write(b, 0, flag);
29 Bout.flush();
30 }
31 //关闭资源,先关写再关读
32 Bout.close();
33 Bin.close();
34 }
35 }