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 }