JAVA 流(Stream)、檔案(File)和IO

來源:互聯網
上載者:User

標籤:can   關閉   cto   序列   對象   構建   路徑   dex   控制   

Java.io 包幾乎包含了所有操作輸入、輸出需要的類。所有這些流類代表了輸入源和輸出目標。

Java.io 包中的流支援很多種格式,比如:基本類型、對象、本地化字元集等等。

一個流可以理解為一個資料的序列。輸入資料流表示從一個源讀取資料,輸出資料流表示向一個目標寫資料。

Java 為 I/O 提供了強大的而靈活的支援,使其更廣泛地應用到檔案傳輸和網路編程中。

  • 節點流:可以從或向一個特定的地方(節點)讀寫資料。如FileReader.
  • 處理流:是對一個已存在的流的串連和封裝,通過所封裝的流的功能調用實現資料讀寫。如BufferedReader.處理流的構造方法總是要帶一個其他的流對象做參數。一個流對象經過其他流的多次封裝,稱為流的連結。

控制台輸入輸出:

JDK 5 後的版本我們也可以使用 Java Scanner 類來擷取控制台的輸入。

讀寫檔案:FileInputStream

方法1:可以使用字串類型的檔案名稱來建立一個輸入資料流對象來讀取檔案

InputStream f = new FileInputStream("C:/java/hello");

方法2:也可以使用一個檔案對象來建立一個輸入資料流對象來讀取檔案。我們首先得使用 File() 方法來建立一個檔案對象:

File f = new File("C:/java/hello");InputStream f = new FileInputStream(f);

FileOutputStream

方法1:使用字串類型的檔案名稱來建立一個輸出資料流對象:

OutputStream f = new FileOutputStream("C:/java/hello")

方法2:也可以使用一個檔案對象來建立一個輸出資料流來寫檔案。我們首先得使用File()方法來建立一個檔案對象:

File f = new File("C:/java/hello"); OutputStream f = new FileOutputStream(f);

//檔案名稱 :fileStreamTest2.javaimport java.io.*; public class fileStreamTest2{  public static void main(String[] args) throws IOException {        File f = new File("a.txt");    FileOutputStream fop = new FileOutputStream(f);    // 構建FileOutputStream對象,檔案不存在會自動建立        OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");    // 構建OutputStreamWriter對象,參數可以指定編碼,預設為作業系統預設編碼,windows上是gbk        writer.append("中文輸入");    // 寫入到緩衝區        writer.append("\r\n");    //換行        writer.append("English");    // 重新整理緩衝沖,寫入到檔案,如果下面已經沒有寫入的內容了,直接close也會寫入        writer.close();    //關閉寫入流,同時會把緩衝區內容寫入檔案,所以上面的注釋掉        fop.close();    // 關閉輸出資料流,釋放系統資源     FileInputStream fip = new FileInputStream(f);    // 構建FileInputStream對象        InputStreamReader reader = new InputStreamReader(fip, "UTF-8");    // 構建InputStreamReader對象,編碼與寫入相同     StringBuffer sb = new StringBuffer();    while (reader.ready()) {      sb.append((char) reader.read());      // 轉成char加到StringBuffer對象中    }    System.out.println(sb.toString());    reader.close();    // 關閉讀取流        fip.close();    // 關閉輸入資料流,釋放系統資源   }}
檔案和I/O

還有一些關於檔案和I/O的類,我們也需要知道:

  • File Class(類)
  • FileReader Class(類)
  • FileWriter Class(類)

 

Java中的目錄

 

建立目錄:

 

File類中有兩個方法可以用來建立檔案夾:

 

  • mkdir( )方法建立一個檔案夾,成功則返回true,失敗則返回false。失敗表明File對象指定的路徑已經存在,或者由於整個路徑還不存在,該檔案夾不能被建立。
  • mkdirs()方法建立一個檔案夾和它的所有父資料夾。

 

下面的例子建立 "/tmp/user/java/bin"檔案夾:

import java.io.File; public class CreateDir {  public static void main(String args[]) {    String dirname = "/tmp/user/java/bin";    File d = new File(dirname);    // 現在建立目錄    d.mkdirs();  }}

編譯並執行上面代碼來建立目錄 "/tmp/user/java/bin"。

注意: Java 在 UNIX 和 Windows 自動按約定分辨檔案路徑分隔字元。如果你在 Windows 版本的 Java 中使用分隔字元 (/) ,路徑依然能夠被正確解析。

讀取目錄

一個目錄其實就是一個 File 對象,它包含其他檔案和檔案夾。

如果建立一個 File 對象並且它是一個目錄,那麼調用 isDirectory() 方法會返回 true。

可以通過調用該對象上的 list() 方法,來提取它包含的檔案和檔案夾的列表。

下面展示的例子說明如何使用 list() 方法來檢查一個檔案夾中包含的內容:

import java.io.File; public class DirList {  public static void main(String args[]) {    String dirname = "/tmp";    File f1 = new File(dirname);    if (f1.isDirectory()) {      System.out.println( "目錄 " + dirname);      String s[] = f1.list();      for (int i=0; i < s.length; i++) {        File f = new File(dirname + "/" + s[i]);        if (f.isDirectory()) {          System.out.println(s[i] + " 是一個目錄");        } else {          System.out.println(s[i] + " 是一個檔案");        }      }    } else {      System.out.println(dirname + " 不是一個目錄");    }  }}

以上執行個體編譯運行結果如下:

目錄 /tmpbin 是一個目錄lib 是一個目錄demo 是一個目錄test.txt 是一個檔案README 是一個檔案index.html 是一個檔案include 是一個目錄

參考資料:

http://www.tuicool.com/articles/NFBvye

JAVA 流(Stream)、檔案(File)和IO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.