熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java的文件IO機制

2013-11-23 19:08:01  來源: Java核心技術 

  Java有一個龐大的I/O系統文件處理只不過是這個系統的一個子系統文件的I/O系統整體上說都是這樣的方式數據是在程序和文件之間傳遞的程序指程序裡的存數據的變量或常量文件指一個File對象以從文件讀字節為例就是首先提供一個連通二者(程序和文件)的管道管道只是個隱喻專業術語叫做流程序與管道的連通是渾然天成的因為管道對象一定是在特定的程序裡生成的這個對象可以很自然的使用程序裡的變量或常量而文件和管道的連通是需要特別指定的連通哪個文件一般是由File對象或一個字符串確定的

  這個管道很神奇在它上面可以施加各種魔法(就是能完成某種功能的方法)能施加什麼樣的魔法取決於管道的特性管道的種類很多但是分類很清晰只有兩大類基礎管道和功能管道對應到Java術語裡就是節點流和處理流基礎管道是根基提供了少量且重要的操作功能管道是錦上添花的提供了更多的方法提高了開發效率而且一個基礎管道可以套上好幾層功能管道對於每一個功能管道來說它只能套在確定類型的基礎管道上其實這個道理很容易明白看看API裡對這些流類的命名就能看出來功能管道和基礎管道是有對應關系的對於文件操作來說基礎管道有四種分別是FileInputStreamFileOutputStreamFileWriterFileReader一個基礎管道的名字包含了個方面的內容以FileInputStream為例File說明了交換數據的一端是文件因為另一端一定是程序了所以不需要指定Input說明了數據的流向是流向程序的Stream說明了交換的數據基本單位是字節就是說把數據流當做字節流同樣可以分析出FileWriter的作用這個名字有File和Writer組成貌似只能說明兩方面的內容但是Writer包含了寫出字符的意思也就是說數據流向是程序>文件交換數據的基本單位是字符把數據流當做字符流

  我們考慮一個簡單的程序把草帽海賊團成員的名字輸入到一個文件strawtxt裡考慮下大致的流程首先把名字存到一個字符串數組裡把該數組的內容輸入到strawtxt裡也就是確定了數據流向程序>文件又因為傳的內容是字符串為了簡單選用FileWriter作為基礎管道接下來考慮選什麼作為功能管道因為要把字符串寫到文件裡查閱API後選取PrintWriter比較合適因為這個類提供了println()很適合把字符串輸出到文件中輸出完成後不要忘了關閉流也就是關閉管道打開一個資源就要記得關閉這個資源這是一個好的編程習慣代碼如下

  代碼

  import javaio*;

  public class FileDemo{

  public static void main(String[] args) throws Exception{

  String names[]={LuffyNamiZoroSanjiChopperUssopRobinBrookFranky};

  FileWriter fw=new FileWriter(strawtxt);

  PrintWriter pw=new PrintWriter(fw);

  for(int i=;i<nameslength;i++){

  pwprintln(names[i]);

  }

  pwflush();

  pwclose();

  }

  }

  關於代碼說明一點在main()裡拋出異常只是為了代碼寫起來簡單但是這種方式不好把異常處理機制當成了擺設沒有讓該機制起到編寫強壯代碼的作用java的IO操作中有很多都會拋出異常所以這類代碼寫起來會有大量的trycatchfinally語句塊出現文件IO操作的原理不難但是用的怎麼樣取決於對API的理解基礎管道的選取是根據題目需要的而功能管道的選取體現了你對API的掌握程度若選取的功能管道不同實現同樣的操作復雜度就會有區別


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26334.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.