Java I/O 幾個重要流的應用,java
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