常用流类,就五个

 1 import java.io.BufferedInputStream;
 2 import java.io.BufferedOutputStream;
 3 import java.io.BufferedReader;
 4 import java.io.BufferedWriter;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.FileReader;
 8 import java.io.FileWriter;
 9 import java.io.InputStream;
10 import java.io.InputStreamReader;
11 import java.io.OutputStream;
12 import java.io.OutputStreamWriter;
13 
14 public class TotalStream {
15     public static void main(String[] args) throws Exception {
16 //        字节流  能操作任何格式的文件  作用就是读到一个字节数据‘97’,找到对应的流【电脑中存的编号】‘0x1010’,然后返回值就是读到的value‘97’,接下的步骤就是让我们的肉眼看见,直接输出就完了
17 //        但是,如果是存的中文,一个字占两个字节,它就把中文分开读 ,对于电脑是不存在乱码问题的,,但是我们肉眼想要看见,就只能看见电脑编号对应的数字(用不同的编码格式解码肉眼看到的就是不同的字符(可能不是中文))。
18         InputStream fis = new FileInputStream("b.txt");
19         OutputStream fos = new FileOutputStream("b.txt");
20 //        举例理解
21         InputStream fis2 = new FileInputStream("b.txt"); // b.txt 存放abc
22         int read = fis2.read(); // 返回‘a’==97
23         System.out.println(read); // 输出97
24 
25         InputStream bis = new BufferedInputStream(fis);
26         OutputStream bos = new BufferedOutputStream(fos);
27 
28 //      字符流
29 //        转换流:可以给字节流指定编码,意思就是输入输出用的都是一种指定的编码格式
30 //        InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。
31 //        它使用的编码格式可以由名称指定或显式给定,或者可以接受平台默认的编码格式。
32         InputStreamReader isr = new InputStreamReader(fis,"utf8");    
33         OutputStreamWriter osw = new OutputStreamWriter(fos,"gbk");
34         
35 //        FileReader继承自InputStreamReader FileReader用于读取字符流。
36         InputStreamReader isr2 = new FileReader("b.txt");
37         OutputStreamWriter osw2 = new FileWriter("b.txt");
38         
39 //        它使用的编码格式可以由名称指定或显式给定,或者可以接受平台默认的编码格式。
40 //        常用与存放自己定义的文本格式
41         BufferedReader br = new BufferedReader(isr2); 
42         br.readLine();  //一行一行读,空行也是有光标的,所以空行也能读,返回值是读到的字符串,读完了没有了则是null
43         BufferedWriter bw = new BufferedWriter(osw2);
44         bw.write("anabaan");
45         bw.newLine(); //换行
46         bw.flush();//每写完一次流就要刷新一次,因为如果流没有写完又继续写,就可能会出现覆盖,那写入的可能就不是我们想要的了
47 
48     }
49 
50 }

 

posted @ 2019-04-11 19:58  我差两天十八岁  阅读(165)  评论(0编辑  收藏  举报