Java 文件輸入流

2018-02-04 16:27 更新

Java IO教程 - Java文件輸入流


在Java I/O中,流意味著數(shù)據(jù)流。流中的數(shù)據(jù)可以是字節(jié),字符,對象等。

要從文件讀取,我們需要創(chuàng)建一個FileInputStream類的對象,它將表示輸入流。

String srcFile = "test.txt";
FileInputStream fin  = new FileInputStream(srcFile);

如果文件不存在,F(xiàn)ileInputStream類的構(gòu)造函數(shù)將拋出FileNotFoundException異常。要處理這個異常,我們需要將你的代碼放在try-catch塊中,如下所示:

try  {
    FileInputStream fin  = new FileInputStream(srcFile);
}catch  (FileNotFoundException e){
    // The error  handling code  goes  here
}


讀取數(shù)據(jù)

FileInputStream類有一個重載的read()方法從文件中讀取數(shù)據(jù)。我們可以一次讀取一個字節(jié)或多個字節(jié)。

read()方法的返回類型是int,雖然它返回一個字節(jié)值。如果到達文件的結(jié)尾,則返回-1。

我們需要將返回的int值轉(zhuǎn)換為一個字節(jié),以便從文件中讀取字節(jié)。通常,我們在循環(huán)中一次讀取一個字節(jié)。

最后,我們需要使用close()方法關閉輸入流。

// Close  the   input  stream 
fin.close();

close()方法可能拋出一個IOException,因此,我們需要在try-catch塊中包含這個調(diào)用。

try  {
    fin.close();
}catch (IOException e)  {
    e.printStackTrace();
}

通常,我們在try塊中構(gòu)造一個輸入流,并在finally塊中關閉它,以確保它在我們完成后總是關閉。

所有輸入/輸出流都可自動關閉。我們可以使用try-with-resources來創(chuàng)建它們的實例,所以無論是否拋出異常,它們都會自動關閉,避免需要顯式地調(diào)用它們的close()方法。

以下代碼顯示使用try-with-resources創(chuàng)建文件輸入流:

String srcFile = "test.txt";
try  (FileInputStream fin  = new FileInputStream(srcFile))  {
    // Use fin to read   data from  the   file here
}
catch  (FileNotFoundException e)  {
    // Handle  the   exception here
}

以下代碼顯示了如何從文件輸入流一次讀取一個字節(jié)。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Main {
  public static void main(String[] args) {
    String dataSourceFile = "asdf.txt";
    try (FileInputStream fin = new FileInputStream(dataSourceFile)) {

      byte byteData;
      while ((byteData = (byte) fin.read()) != -1) {
        System.out.print((char) byteData);
      }
    } catch (FileNotFoundException e) {
      ;
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號