《零基礎學Java》 文件輸入/輸出流 程式運行期間,大部分數據都被存儲在記憶體中,當程式結束或被關閉時,存儲在記憶體中的數據將會消失。如果要永久保存數據,那麼最好的辦法就是把數據保存到磁碟的文件中。為此,Java提供了文件輸入/輸出流,即 FilelnputStream類 與 FilcOutputSr ...
《零基礎學Java》
-
文件輸入/輸出流
程式運行期間,大部分數據都被存儲在記憶體中,當程式結束或被關閉時,存儲在記憶體中的數據將會消失。如果要永久保存數據,那麼最好的辦法就是把數據保存到磁碟的文件中。為此,Java提供了文件輸入/輸出流,即 FilelnputStream類 與 FilcOutputSream類 和 FilcRcader類 與 FileWriter類 。
-
FilelnputStream類 與 FilcOutputSream類
Java提供了操作磁碟文件的 FilelnpuSueam類 與 FileOutputStream類 (讀取文件內容使用的是FilenputStram類;向文作中寫入內容使用的是FileOutputStream類)。FilelnputStream類 與 FilcOutputSream類 操作的數據單元是一個位元組,如果文件中有中文字元則占兩個位元組。
FilelnpuSueam類常用的構造方法:
構造方法 介紹 FilelnpuSueam(String name); 使用指定的文件名****(name)創建一個FilelnpuSueam對象; FilelnpuSueam(File file); 使用File對象創建FilelnpuSueam對象。(PS:該方法允許把文件鏈接輸入流) FileOutputStream類常用的構造方法:
構造方法 介紹 FileOutputStream(File file); 使用File對象創建FileOutputStream對象,為文件寫入數據的文件輸出流。 FileOutputStream(File file , boolean whether); 使用File對象創建FileOutputStream對象,為文件寫入數據的文件輸出流,當 whether 為 true 時,位元組寫入文件末尾處,而不是覆蓋。 FileOutputStream(String name); 使用指定的文件名(name)創建一個FilelnpuSueam對象,為文件寫入數據的文件輸出流。 FileOutputStream(String name , boolean whether); 使用指定的文件名(name)創建一個FilelnpuSueam對象,為文件寫入數據的文件輸出流,當 whether 為 true 時,位元組寫入文件末尾處,而不是覆蓋。 FilelnputStream類與FilcOutputSream類 實例:
mport java.io.*; public class Demo2 { public static void main(String[] args) { File file = new File("C:\\12.4.1\\Word.txt"); /** * 輸出流 (FileOutputStream) */ FileOutputStream outputStream =null; try { outputStream=new FileOutputStream(file,true);//輸出流 讀文件。true:在文件末尾追加內容; fales:替換文件內容; String str = "hello word"; byte by[] = str.getBytes();//字元串轉換為位元組數組 try { outputStream.write(by);//將位元組數組中的數據寫入到文件當中 } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); }finally { if (outputStream!=null){ try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 輸入流 (FileInputStream) */ FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream(file);//輸入流 讀文件 byte by1[] = new byte[128];//創建緩衝區 try { int len = fileInputStream.read(by1);//讀入緩衝區的總位元組數 = 輸入流添加到緩衝區 System.out.println("文件中的數據為:"+new String(by1,0,len));//去空格 } catch (IOException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); }finally { if (fileInputStream!=null){ try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
-
FileReader類 與 FileWriter類
FileReader類 與 FileWriter類 對應了 FilelnputStream類 與 FilcOutputSream類;其中讀取文件內容使用的是FileReader類,向文件寫入內容使用的是FileWriter類;FileReader類 與 FileWriter類操作的數據單元是一個位元組,如果文件中有中文字元,就可以使用FileReader類 與 FileWriter類讀取文件、寫入文件就可以避免亂碼的產生。
FileReader類 與 FileWriter類 實例:
import java.io.*; public class Demo3 { public static void main(String[] args) { File file = new File("C:\\Word.txt"); /** * 字元輸出流(FileWriter) */ FileWriter fileWriter = null; try { fileWriter=new FileWriter(file,true);// true:在源文件後追加新內容; fales:覆蓋源文件; String str = "神里綾華,參上!"; fileWriter.write(str);//將字元串寫入到文本文檔 } catch (IOException e) { e.printStackTrace(); }finally { if (fileWriter != null){ try { fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 字元輸入流(FileReader) */ FileReader fileReader = null; try { fileReader=new FileReader(file); char ch[] = new char[1024];//緩衝區 int i;//已讀出的字元數 while ((i=fileReader.read(ch))!=-1){//迴圈讀取文件中的數據,直到所有字元都讀完。 System.out.println("文件中的內容為"+new String(ch,0,i)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { if (fileReader != null){ try { fileReader.close(); } catch (IOException e) { e.printStackTrace(); } } } } }