更新時間:2022-09-09 10:35:10 來源:動力節(jié)點 瀏覽1245次
程序使用字節(jié)流來執(zhí)行 8 位字節(jié)的輸入和輸出。所有字節(jié)流類都來自 InputStream和 OutputStream。
有許多字節(jié)流類。為了演示字節(jié)流是如何工作的,我們將關注文件 I/O 字節(jié)流 FileInputStream和 FileOutputStream. 其他類型的字節(jié)流的使用方式大致相同。它們的不同之處主要在于它們的構造方式。
我們將探索FileInputStream并FileOutputStream檢查一個名為 的示例程序 CopyBytes,它使用字節(jié)流一次復制xanadu.txt一個字節(jié)。
導入 java.io.FileInputStream;
導入 java.io.FileOutputStream;
導入 java.io.IOException;
公共類 CopyBytes {
公共靜態(tài) void main(String[] args) 拋出 IOException {
FileInputStream in = null;
FileOutputStream out = null;
嘗試 {
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");
詮釋 c;
而 ((c = in.read()) != -1) {
out.write(c);
}
} 最后 {
如果(在!= null){
附寄();
}
如果(出!= null){
out.close();
}
}
}
}
CopyBytes大部分時間都花在一個簡單的循環(huán)中,該循環(huán)讀取輸入流并寫入輸出流,一次一個字節(jié), 如下圖所示。
在不再需要時關閉流非常重要——CopyBytes使用finally塊來保證即使發(fā)生錯誤也將關閉兩個流,這一點非常重要。這種做法有助于避免嚴重的資源泄漏。
一種可能的錯誤是CopyBytes無法打開一個或兩個文件。發(fā)生這種情況時,與文件對應的流變量永遠不會從其初始null值改變。這就是為什么CopyBytes在調用之前確保每個流變量都包含一個對象引用的原因close。
CopyBytes看起來像一個普通的程序,但它實際上代表了一種你應該避免的低級 I/O。由于xanadu.txt包含字符數(shù)據(jù),因此最好的方法是使用字符流,如下一節(jié)所述。還有更復雜的數(shù)據(jù)類型的流。字節(jié)流應該只用于最原始的 I/O。
那么為什么要談論字節(jié)流呢?因為所有其他流類型都建立在字節(jié)流之上。
通過上述介紹,相信大家對Java字節(jié)流的使用已經(jīng)有所了解,大家如果想了解更多相關知識,不妨來關注一下動力節(jié)點的Java視頻教程,里面的課程內容由淺到深,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。