Java中IO流知識點總結
一、流的分類 1、按功能分 讀取流:InputStream Reader 寫出流:OutPutStream Writer 2、按流的類型分類 字節流:InputStream OutputStream 字符流:Reader Writer 二、流功能分析 讀取流是從輸入設備或數據對象中讀取數據到程序,用程序進行處理讀入的數據,寫出流是把程序處理的數據輸出到 輸出設備上比如硬盤和控制臺。 字節流讀取和寫入的數據單位是字節,可以讀取和寫入任何類型的數據。字符流讀取跟寫入的數據單位是字符,只能 讀取和 寫入文本類型的數據。當需要讀取或寫入文本型的數據時要用字符流,因為它會比字節流讀寫字符更方便和高效,相反當數 據不是文本型時只能用字節流來讀取跟寫入。 三、流中讀寫方法的示例。(當用到IO流時就有可能出現IO異常,所以需要處理可能的異常) 字節流: FileOutputStream fos = new FileOutputStream("D://xxx.xxx"); fos.write("dsfdsf".getBytes());//寫入字節數組 fos.close(); //用完后需要關閉流,釋放資源。字節流不需要Flush FileInputStream fis = new FileInputStream("D://xxx.xxx"); fis.read(); //讀取一個字節 fis.close(); 字符流: FileWriter fw = new FileWriter("D:\\xxx.txt"); fw.write("sdfsdfsdf");//可以直接寫入字符串 fw.flush(); //寫完后需要Flush,才能真正寫道輸出設備 fw.close(); //close()時也會Flush。 FileReader fr = new FileReader("D:\\xxx.txt"); fr.read(char[] ch);//可以讀取一個字符數組的內容 fr.close(); 四、轉換流 當需要流之間的轉換時會用到轉換流。 1、把字節讀取流轉換成字符讀取流 InputStreamReader isr = new InputStreamReader(new FileInputStream("xxx.xxx")); 2、把字符輸出流轉化成字節輸出流 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("xx.xxx"));
五、緩沖流 需要提高流的讀寫效率時會用到緩沖流 1、字節緩沖流 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("xx")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xx")); 2、字符緩沖流 BufferedReader br = new BufferedReader(new FileReader("xx.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("xx.txt")); 緩沖流對讀寫功能進行了增強,而且使用緩沖技術提高了讀寫效率,所以當需要提高程序的讀寫效率時要使用緩沖流。 六、File類的使用 1、創建 boolean createNewFile():在指定位置創建文件,如果該文件已經存在,則不創建,返回false。 和輸出流不一樣,輸出流對象已建立創建文件。而且文件已經存在,會覆蓋。 boolean mkdir()創建文件夾 boolean mkdirs() 創建多級文件夾 2、刪除。 boolean delete();刪除失敗時返回false。如果文件正在被使用,則刪除不了返回false。 void deleteOnExit();在程序退出時刪除指定文件。 3、判斷 boolean exists();文件是否存在。 isFile():是不是文件 isDirectory();是不是文件夾 isHidden();是不是隱藏文件 isAbsolute();是不是絕對路徑 4、獲取信息 getName();文件名 getPath();文件路徑 getParent();上一層路徑 getAbsolutePath();絕對路徑
五、緩沖流
需要提高流的讀寫效率時會用到緩沖流
1、字節緩沖流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("xx"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xx"));
2、字符緩沖流
BufferedReader br = new BufferedReader(new FileReader("xx.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("xx.txt"));
緩沖流對讀寫功能進行了增強,而且使用緩沖技術提高了讀寫效率,所以當需要提高程序的讀寫效率時要使用緩沖流。
六、File類的使用
1、創建
boolean createNewFile():在指定位置創建文件,如果該文件已經存在,則不創建,返回false。
和輸出流不一樣,輸出流對象已建立創建文件。而且文件已經存在,會覆蓋。
boolean mkdir()創建文件夾
boolean mkdirs() 創建多級文件夾
2、刪除。
boolean delete();刪除失敗時返回false。如果文件正在被使用,則刪除不了返回false。
void deleteOnExit();在程序退出時刪除指定文件。
3、判斷
boolean exists();文件是否存在。
isFile():是不是文件
isDirectory();是不是文件夾
isHidden();是不是隱藏文件
isAbsolute();是不是絕對路徑
4、獲取信息
getName();文件名
getPath();文件路徑
getParent();上一層路徑
getAbsolutePath();絕對路徑