想要查看此教程的目錄請點擊:Java IO教程目錄貼地址
FileOutputStream可以以流的形式寫出一個文件。他是OutputStream的子類。
OutputStream例子
下面是FileOutputStream的簡單例子:
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt");
while(moreData) {
int data = getMoreData();
output.write(data);
}
output.close();
OutputStream的構造方法
OutputStream包含了一些使用的構造方法,我會介紹比較常用的一些構造方法。
第一個構造方法需要傳入一個String類型的參數,即你要寫出數據的目標文件路徑:
String path = "C:\\users\\jakobjenkov\\data\\datafile.txt";
FileOutputStream output = new FileOutputStream(path);
第二個構造方法為傳入一個File類型的參數,它指向的是系統上的一個文件:
String path = "C:\\users\\jakobjenkov\\data\\datafile.txt";
File file = new File(path);
FileOutputStream output = new FileOutputStream(file);
覆蓋文件和增量寫入文件
如果你創建了一個FileOutputStream,并準備輸出到一個已經存在的文件,這時你不得不去決定,是要覆蓋這個文件還是增量的去寫入。這取決于如何使用構造方法。
如果構造方法只傳入一個參數也就是文件全名,那么就會覆蓋已存在的文件:
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt");
然后還有一個兩個參數的構造方法,一個參數是文件名,還有一個參數為boolean類型,它表明了你是想覆蓋還是想增量寫入。下面是兩個例子:
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt", true); //增量寫入文件
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt", false); //覆蓋文件
write()
這個方法需要傳入一個int類型的你想要寫出的數據。
寫字節數組
由于FileOutputStream是OutputStream的子類,所以你也可以寫字節數組,來替代每次僅寫一個字節。
flush()
當你把數據寫入FileOutputStream,數據有可能緩存在計算機的內存中,會晚一些寫入磁盤。例如每當有“X”數量的數據需要寫入時,或者FileOutputStream流已經關閉。
如果你想確定在流未關閉并且所有的數據已經寫入磁盤,那么你可以調用flush()方法。
close()
和其他的OutputStream一樣,FileOutputStream也需要早使用后關閉它。只要調用close()方法即可。