国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

讓你的應用程序隨Java流而動

2019-11-18 13:28:11
字體:
來源:轉載
供稿:網友

  java.io包包含了用于治理文件和數據流的類。Java流是一大塊順序數據,你可以對它進行治理,讓它適合你應用程序的需求。
  
  文件被作為字節的順序集保存在存儲設備上。你可以使用輸入流從文件里讀出字節,并把這些字節保存到臨時的字節數組里,或者使用輸出流把它們寫到新的文件里。使用流,你可以進行自動化任務,例如備份服務器上的一組目錄,從文本文件讀出字符,以及把文本信息寫到日志文件里。
  
  java.io包的要害組件是文件對象、InputStreams和OutputStreams、FileStreams、閱讀器,以及編寫器。
  
  文件對象
  
  在我們開始把這些文件轉變成流之前,你需要對文件對象有一個很好的理解。文件對象代表了本地文件系統里的文件或者文件夾。要注重:聲明一個文件對象并不會在文件系統里創建文件。
  
  在你和文件系統打交道的時候,異常處理是很重要的。文件可能不存在——或者可能無法使用你指定的路徑創建文件夾。
  
  下面這些例子顯示了文件對象的方法的使用。
  
  
  
  創建一個新目錄
  
  使用下面的代碼就能夠創建一個新目錄。讓一個對象代表新目錄,然后調用mkdir()方法創建這個目錄:
  
  //Create File Object
  File newDir = new File(“d:/test/mydocs/”);
  //Create New Directory
  newDir.mkdir();
  
  刪除一個文件
  
  刪除一個文件很輕易。只用為要刪除的文件創建文件對象并調用文件的delete()方法就行了,見下面的代碼片段:
  
  //Create File Object
  File f = new File(“d:/test.txt”);
   //Delete the file
  f.delete();
  列出一個目錄
  
  要記住的是,文件對象代表著文件或者文件夾。所以假如想要列出一個目錄里的所有文件,那你就要像下面這樣把文件對象實例化:
  
  //Create File Object
  File dir = new File(“d:/test/”);
  
  一旦有了合適的路徑,你就可以在其內容中迭代了:
  
  //List directory
  if(dir.isDirectory())
  {
  String s[] = dir.list();
  for (int i=0;
  i  
  //Iterate through files
  }
  }
  
  文件對象的list()方法將返回一個字符串數組,這會列出目錄的內容——文件和文件夾都會被列出來。
  
  字符串數組經常被用來向用戶顯示目錄的內容,或者用于創建更多的文件對象來反復搜尋目錄里所有的文件夾和子文件夾。
  
  輸入和輸出流
  
  流對象和過濾器對象經常會讓程序員感到迷惑。圖A概述了處理流和過濾器的抽象模型。
  
  圖A
   讓你的應用程序隨Java流而動(圖一)
  抽象的輸入和輸出處理
  
  輸入
  
  輸入處理像下面這樣工作:
  
  輸入流從輸入設備讀取字節。
  輸入過濾器從輸入流里讀取字節,并將數據返回給其調用者。
  
  輸出
  
  輸出處理以類似的方式工作:
  
  輸出過濾器接收數據,并把字節寫到輸出流。
  輸出流接收字節,并把它們寫到輸出設備。
  這個簡單的模型很靈活,因為你可以把其他過濾器串起來,從而擴展其處理能力,讓其能夠實現特定目標。
  
  
  文件流和過濾器
  
  讓我們看上述模型的一個例子。在這個例子里,我們的目標是從文件系統里讀取文件,對流進行緩沖,然后再用不同的名稱把文件寫到文件系統里。事實上,我們是在把文件從一個地方復制到另一個地方(見圖B)。Listing A里的代碼提供了達到這個目的的方法。
  
  圖B
  讓你的應用程序隨Java流而動(圖二)
  文件輸入和輸出處理
  
  
  要注重以下抽象模型和文件模型之間的關系:
  
  FileInputStream是InputStream的子類。
  BufferedInputStream是FilterInputStream的子類。
  
  類似地:
  
  BufferedOutputStream是FilterOutputStream的子類。
  FileOutputStream是OutputStream的子類。
  復制一個目錄
  
  Listing B使用了我們在Listing A里用過的copyFile方法,而且使用了文件的用于目錄的list()方法,它把所有的文件(不是文件夾)從一個目錄復制到了另一個目錄。
  
  這方法帶有兩個參數——要被復制文件夾的名稱和我們要把文件復制到的文件夾。
  
  閱讀器和編寫器超類
  閱讀器和編寫器是用于所有字符流的超類。這兩者都能處理Unicode字符,能夠正確地處理本地編碼和Unicode文本之間的相互轉換。
  
  Unicode是一項表示文本的標準,對諸如印度語、朝鮮語和漢語等字符集提供了支持。Java和xml都使用Unicode表示大量的人類語言。
  
  當被讀取的數據源是文本的時候,我們都要使用閱讀器和編寫器,而不是用InputStreams和 OutputStreams,后兩者專門用于處理字節。
  
  從文件讀取文本
  
  FileReader是InputStreamReader的子類,被用作從文件里讀取文本。BufferedReader是閱讀器的子類,能夠提高字符輸入操作的效率。
  
  Listing C所包含的例子使用FileReader和BufferedReader從文件里讀取文本。
  
  把文本寫入文件
  
  FileWriter是OutputStreamWriter的子類,被用作把文本寫入文件。BufferedWriter是編寫器的子類,能夠提高字符輸出操作的效率。
  
  Listing D使用FileWriter把Java字符串寫入文件。
  
  結論
  
  本教程從解釋文件對象開始,并把它作為理解輸入和輸出流,以及閱讀器和編寫器的基礎。
  
  你現在應該可以更好地了解了如何創建和刪除文件,把文件從一個地方復制到另一個地方,以及讀取和編寫文本文件,所有這些都是在Java流對象的幫助下完成的。
  [[The No.1 Link Start.]]
  本文相關連接請點這里>>>[[The No.1 Link End.]]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克什克腾旗| 都匀市| 乐昌市| 额济纳旗| 娱乐| 桐城市| 吉安市| 沾益县| 城步| 曲周县| 巴青县| 晴隆县| 梁山县| 洪泽县| 个旧市| 永新县| 扎囊县| 涟水县| 辰溪县| 嘉兴市| 水城县| 农安县| 固阳县| 当阳市| 彭山县| 建昌县| 双牌县| 铜鼓县| 郴州市| 德钦县| 汝城县| 深泽县| 信宜市| 本溪市| 衢州市| 卓尼县| 石城县| 宜阳县| 庄浪县| 青州市| 电白县|