IO流程圖

掌握13個Io流
一、FileInputStream 和 FileoutputStream
FileInputStream:文件的讀取
1 public class readers
2 {
3 public static void main(String[] args) throws Exception
4 {
5 File file = new File("F:\\java\\workspace\\Fanshe\\src\\com\\cyg\\fanshe.java");//讀取文件
6 FileInputStream fi = new FileInputStream(file);//創建字節流,打開該 文件
7 byte[] b = new byte[fi.available()];//fi.available 可以獲取文件占多少字節
8 int a = -1;
9 while((a= fi.read(b))!= -1)//判斷文件是否到達文件末尾
10 {
11 //System.out.println(new String(b));
12 }
13 System.out.println(new String(b));
14 //關閉流
15 fi.close();
16
17 }
18 }
FileoutputStream:文件的寫入
1 public class output
2 {
3 public static void main(String[] args) throws Exception
4 {
5 File file = new File("F:\\a.txt");
6 FileOutputStream out = new FileOutputStream(file);
7 out.write("abmin".getBytes());
8 out.flush();//清楚緩存
9 out.close();//關閉流
10 }
11 }
二、BufferedInputStream 和 BufferedOutputStream
BufferedInputStream 是一個緩沖流
作用:為另一個輸入流添加一些功能,即緩沖輸入以及支持 mark (標記)和 reset 重置方法的能力,是通過一個內部緩沖區數組實現的。
1 public class buffertream
2 {
3 public static void main(String[] args) throws Exception
4 {
5 FileInputStream in = new FileInputStream("E:\\win10 64\\vmware.log");
6 BufferedInputStream bu = new BufferedInputStream(in);
7 FileOutputStream out = new FileOutputStream("E:\\a.txt");
8 BufferedOutputStream bo = new BufferedOutputStream(out);
9
10 byte[] b = new byte[1024];
11 int a = bu.read(b);
12 while(a != -1)
13 {
14 //System.out.println(Arrays.toString(b));
15 bo.write(b, 0, a);
16 a = bu.read(b);
17 }
18 in.close();
19 bu.close();
20
21 bo.flush();
22 out.close();
23 bo.close();
24 }
25 }
運行結果如下

三、DataOutputStream 和 DataInputStream
是一個數據輸入流 它繼承FilterInputStream,用來裝飾其他輸入流
1 public class adtastream
2 {
3 public static void main(String[] args) throws Exception
4 {
5 FileOutputStream out = new FileOutputStream("E:\\b.txt");
6 DataOutputStream dot = new DataOutputStream(out);//過濾流必須要有一個節點流
7
8 //寫入數據
9 dot.writeInt(10);
10 dot.writeBytes("admin");
11 dot.writeChar('a');
12 dot.writeBoolean(true);
13
14 out.flush();
15 out.close();
16 dot.close();
17
18 FileInputStream in = new FileInputStream("E:\\b.txt");
19 DataInputStream di = new DataInputStream(in);
20
21 //讀取數據的時候要和寫入的順序一樣 不然破壞結構
22 System.out.println(di.readInt());
23 System.out.println(di.readByte());
24 System.out.println(di.readChar());
25 System.out.println(di.readBoolean());
26 }
27 }

四、ByteArrayInputStream 和 ByteArrayOutputStream
ByteArrayInputStream 專門用來讀取內存中的數據
1 public class bytestream
2 {
3 public static void main(String[] args) throws Exception
4 {
5 ByteArrayOutputStream out = new ByteArrayOutputStream();
6 String str = "admin";
7 out.write(str.getBytes());
8 byte [] b = new byte[200];
9 ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes());//ByteArrayInputStream: 專門用來從內從中讀取數據的流
10 in.read(b);
11 System.out.println(Arrays.toString(b));
12 }
13 }

打印出來是damin所對應的系統底層源碼
五、ObjectInputStream 和 ObjectoutputStream
六、BufferedReader 和 BufferedWriter