InputStream & OutputStream 使用方法以及注意事项

 1 /*
 2  * To change this license header, choose License Headers in Project Properties.
 3  * To change this template file, choose Tools | Templates
 4  * and open the template in the editor.
 5  */
 6 package InputStream;
 7 
 8 import java.io.BufferedInputStream;
 9 import java.io.BufferedOutputStream;
10 import java.io.File;
11 import java.io.FileInputStream;
12 import java.io.FileOutputStream;
13 
14 /**
15  *
16  * @author steven
17  */
18 /*
19 IO 体系
20 字节流练习
21 InputStream 字节输入流为抽象接口 ,不能直接创建对象,可以通过其子类 FileInputStream来创建对象
22 格式为: InputStream is = new FileInputStream("文件路径");
23        或者:FileInputStream fis = new FileInputSteam("文件路径");
24        如果想提高效率,可以使缓冲流来包装,格式为:
25        BufferedInputStream bis = new BufferedInputStream(fis);
26        这种模式称为装修设计模式
27 OutputStream 字节输出流,也为抽象接口,不能直接创建对象,可以通过其子类FileOutputStream来创建对象
28 格式为:OutputStream os = new FileOutputStream("文件路径");
29         或者 FileOutputStream fos = new FileOutStream("文件路径");
30         如果向提高效率,可以使用高效缓冲流包装
31         格式为:BufferedOutputStream bos = new BufferedOutputStream(fos);
32 
33 */
34 public class InputStream_01 {
35     public static void main(String[] args) throws Exception {
36         File file = new File("c:\\test\\1.txt");//关联文件
37         FileInputStream fis = new FileInputStream(file);//创建字节输入流
38         BufferedInputStream bis = new BufferedInputStream(fis);//升级为高速缓冲输入流
39         
40         File copyfile = new File("c:\\copy.txt");//关联新的复制文件
41         FileOutputStream fos = new FileOutputStream(copyfile);//创建字节写出流
42         BufferedOutputStream bos = new BufferedOutputStream(fos);//升级为高速缓冲写出流
43         
44         byte[] buf = new byte[1024];//创建1kb的读取缓冲数组;
45         int len ;
46         while((len = bis.read(buf)) != -1){//读取内容记录在buf数组中;
47             bos.write(buf, 0, len);//带字符数组缓冲的高效写出流,格式为buf.write(buf,0,len)
48                                    //其中buf为缓冲数组,BufferedOutputStream本身具有8Kb的缓冲大小
49                                    //每一将数组中1kb的数据加载到8Kb的缓冲区中,待到8kb缓冲区全部装满后
50                                    //系统会自动的将缓冲区的8kb内容一次性全部刷新到磁盘文件中;
51                                    //0为写入的开始,len为写入的长度,范围为(0-len)包括0不包括len
52             bos.flush();//字节流不一定非要写刷新,但是在结束虚拟机之前一定要关闭缓冲流的写出,
53             bos.close();//否则写出的文件不能被写入到本地磁盘中,会被当做垃圾被虚拟机回收!
54             //System.out.print(new String(buf,0,len));
55         }
56     }
57     
58     
59     
60     
61 }

 

上一篇:##


下一篇:2021.12 做题笔记