更新時間:2022-09-09 10:35:10 來源:動力節點 瀏覽1135次
程序使用字節流來執行 8 位字節的輸入和輸出。所有字節流類都來自 InputStream和 OutputStream。
有許多字節流類。為了演示字節流是如何工作的,我們將關注文件 I/O 字節流 FileInputStream和 FileOutputStream. 其他類型的字節流的使用方式大致相同。它們的不同之處主要在于它們的構造方式。
我們將探索FileInputStream并FileOutputStream檢查一個名為 的示例程序 CopyBytes,它使用字節流一次復制xanadu.txt一個字節。
導入 java.io.FileInputStream;
導入 java.io.FileOutputStream;
導入 java.io.IOException;
公共類 CopyBytes {
公共靜態 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大部分時間都花在一個簡單的循環中,該循環讀取輸入流并寫入輸出流,一次一個字節, 如下圖所示。
在不再需要時關閉流非常重要——CopyBytes使用finally塊來保證即使發生錯誤也將關閉兩個流,這一點非常重要。這種做法有助于避免嚴重的資源泄漏。
一種可能的錯誤是CopyBytes無法打開一個或兩個文件。發生這種情況時,與文件對應的流變量永遠不會從其初始null值改變。這就是為什么CopyBytes在調用之前確保每個流變量都包含一個對象引用的原因close。
CopyBytes看起來像一個普通的程序,但它實際上代表了一種你應該避免的低級 I/O。由于xanadu.txt包含字符數據,因此最好的方法是使用字符流,如下一節所述。還有更復雜的數據類型的流。字節流應該只用于最原始的 I/O。
那么為什么要談論字節流呢?因為所有其他流類型都建立在字節流之上。
通過上述介紹,相信大家對Java字節流的使用已經有所了解,大家如果想了解更多相關知識,不妨來關注一下動力節點的Java視頻教程,里面的課程內容由淺到深,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習