package cn.itcast_01;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream.GetField;/* * IO流分類: * 流向: * 輸入流 讀取數據 * 輸出流 寫出數據 * 數據類型: * 字節流 * 字節輸入流 讀取數據 InputStream * 字節輸出流 寫出數據 OutputStream * 字符流 * 字符輸入流 讀取數據 Reader * 字符輸出流 寫出數據 Writer * * 注意:一般我們在探討IO流的時候,如果沒有明確說明那種分類來說,默認情況下按照數據類型來分的。 * * 需求:我要往一個文本文件中輸入一句話:hello,io。 * * 分析: * A:這個操作最好采用字符流來做,但是呢,字符流是在字節流之后才出現的,所以,先用字節流來操作 * B:由于我要往文件中寫一句話,所以我們要采用字節輸出流。 * * 通過上面的分析后我們知道使用:OutputStream * 但是通過查看API,我們發現該流對象是一個抽象類,不能實例化。 * 所以我們要找一個具體的了類。 * 而我們要找的字類是什么名字呢?這個時候,很簡單,我們回想一下,我們是不是要往文件中寫東西。 * 文件是那個單詞:File * 然后用的是字節輸出流,流起來就是:FileOutputStream * 注意:每種基類的子類都是以父類名作為后綴名。 * XxxOutputStream * XxxInputStream * XxxReader * XxxWirter * 查詢FileOutputStream的構造方法: * FileOutputStream(File file) * FileOutputStream(String name) * * 字節輸出流操作步驟: * A:創建字節輸出流對象 * B:寫數據 * C:釋放資源 */public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { // 創建對象 // FileOutputStream(File file) // File file = new File("file.txt"); // FileOutputStream fos = new FileOutputStream(file); // FileOutputStream(String name) FileOutputStream fos = new FileOutputStream("fos.txt"); /* * 創建字節輸出流對象做了幾件事情: A:調用系統功能去創建 B:創建fos對象 C:把fos對象指定這個文件 */ // 寫數據 fos.write("java.io".getBytes()); fos.write("java".getBytes()); // 釋放資源 // 關閉此文件輸出流并釋放與此流相關的所有系統資源。 fos.close(); /* * 為什么一定要close()呢? A:讓流對象變成垃圾,這樣就可以被垃圾回收器回收了 B:通知系統去釋放跟該文件相關的資源 */ // java.io.IOException: Strem Closed // fos.write("java".getBytes()); }}
新聞熱點
疑難解答