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 }