想要查看此教程的目錄請點擊:Java IO教程目錄貼地址
使用FileInputStream可以以字節流的形式來讀取文件內容。FileInputStream是InputStream的子類,所以你可以使用FileInputStream像InputStream一樣。
FileInputStream例子
下面是一個簡單的例子:
InputStream input = new FileInputStream("c:\\data\\input-text.txt");
int data = input.read();
while(data != -1) {
//do something with data...
doSomethingWithData(data);
data = input.read();
}
input.close();
注意:為了保證代碼思路清晰,這里并沒有考慮異常處理的情況。
FileInputStream的構造方法
FileInputStream提供了三種構造方法來創建一個實例。我會在這里先介紹前兩個。
第一個構造方法有一個String類型的參數。這個參數是指你想要讀取的文件路徑。下面是一個例子:
String path = "C:\\user\\data\\thefile.txt";
FileInputStream fileInputStream = new FileInputStream(path);
注意路徑字符串。他需要兩個“\”來生成一個“\”。因為“\”在Java中是轉義字符。所以你想寫一個“\”就得用兩個“\”來表示。
在linux或unix中,文件的路徑像下面這樣:
String path = "/home/jakobjenkov/data/thefile.txt";
注意使用常規的分隔符(/)來作為目錄分隔符。這是如何在linux或unix上寫文件路徑。實際上,以我的經驗,Java應該也理解你在windows上用"/"作為路徑分隔符,類似這樣的:c:/user/data/thefile.txt,但是別聽我的,你去你的系統上測試一下。
第二個構造方式是提供一個File類型的參數。這個參數你可以傳入你想要讀取的文件:
String path = "C:\\user\\data\\thefile.txt";
File file = new File(path);
FileInputStream fileInputStream = new FileInputStream(file);
具體選用哪個構造函數,這取決于你有什么。如果你已經有一個String或File,那么只要用相應的就好了。將String轉為File或者將File轉為String,并沒有太大的區別。
read()
FileInputStream的read()方法會返回一個int值,它是讀取的字節。如果返回 -1,那么說明已經讀取完畢。-1是int值,而不是一個byte值,這里可是不一樣的。這個方法和InputStream中的read()使用是一樣的。
read(byte[])
FileInputStream也有兩個read()方法,使用的的方式也是和InputStream章節是一樣的。
close()
和其他的InputStream一樣,FileInputStream也需要在使用后關閉,調用close()方法即可。至于異常處理,可以參考相關的異常處理章節。