字節流
程序使用字節流來執行8位字節的輸入和輸出,所有的字節流類都是從InputStream和OutputStream派生出來的。
有許多字節流類,為了演示字節流的工作原理,我們將重點關注文件I/O字節流,FileInputStream和FileOutputStream,其他類型的字節流以大致相同的方式使用,它們的不同之處主要在于它們的構造方式。
使用字節流我們將通過檢查名為CopyBytes的示例程序來探索FileInputStream和FileOutputStream,該程序使用字節流來復制xanadu.txt,一次一個字節。
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyBytes { public static void main(String[] args) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("xanadu.txt"); out = new FileOutputStream("outagain.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } }
CopyBytes將大部分時間花在一個簡單的循環中,該循環讀取輸入流和寫入輸出流,一次一個字節,如下圖所示。
始終關閉流在不再需要流時關閉流非常重要 — 非常重要的是CopyBytes使用finally塊來保證即使發生錯誤也會關閉兩個流,這種做法有助于避免嚴重的資源泄漏。
一個可能的錯誤是CopyBytes無法打開一個或兩個文件,發生這種情況時,對應于該文件的流變量永遠不會從其初始null值更改,這就是為什么CopyBytes在調用close之前確保每個流變量都包含一個對象引用。
何時不使用字節流CopyBytes看起來像一個普通的程序,但它實際上代表了一種你應該避免的低級別I/O,由于xanadu.txt包含字符數據,因此最好的方法是使用字符流,如下一節中所述。還有用于更復雜數據類型的流,字節流應僅用于最原始的I/O。
那么為什么要談論字節流呢?因為所有其他流類型都是基于字節流構建的。
上一篇:I/O流 下一篇:字符流文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72970.html
字符流 Java平臺使用Unicode約定存儲字符值,字符流I/O自動將此內部格式與本地字符集進行轉換,在Western語言環境中,本地字符集通常是ASCII的8位超集。 對于大多數應用程序,具有字符流的I/O并不比具有字節流的I/O復雜,使用流類完成的輸入和輸出會自動轉換為本地字符集和從本地字符集轉換,使用字符流代替字節流的程序會自動適應本地字符集并為國際化做了準備 — 所有這些都無需程序員的額...
數據流 數據流支持原始數據類型值(boolean、char、byte、short、int、long、float和double)以及String值的二進制I/O,所有數據流都實現DataInput接口或DataOutput接口,本節重點介紹這些接口最廣泛使用的實現,DataInputStream和DataOutputStream。 DataStreams示例通過寫出一組數據記錄,然后再次讀取它們來演...
命令行I/O 程序通常從命令行運行,并在命令行環境中與用戶交互,Java平臺以兩種方式支持這種交互:通過標準流和控制臺。 標準流 標準流是許多操作系統的一個特性,默認情況下,它們從鍵盤讀取輸入并將輸出寫入顯示器,它們還支持文件和程序之間的I/O,但該功能由命令行解釋器控制,而不是程序。 Java平臺支持三種標準流:標準輸入,可通過System.in訪問;標準輸出,可通過System.out訪問;和...
摘要:一面試題及剖析今日面試題今天壹哥帶各位復習一塊可能會令初學者比較頭疼的內容,起碼當時讓我很有些頭疼的內容,那就是流。在這里壹哥會從兩部分展開介紹流,即與流。除此之外盡量使用字節流。關閉此輸入流并釋放與流相關聯的任何系統資源。 一. 面試題及剖析 1. 今日面試題 今天 壹哥 帶各位復習一塊可...
I/O流 I/O流表示輸入源或輸出目標,流可以表示許多不同類型的源和目標,包括磁盤文件、設備、其他程序和內存數組。 流支持許多不同類型的數據,包括簡單字節、原始數據類型、本地化字符和對象,有些流只是傳遞數據,其他人以有用的方式操縱和轉換數據。 無論它們如何在內部工作,所有流都為使用它們的程序提供相同的簡單模型:流是一系列數據,程序使用輸入流從源讀取數據,一次一個條目: showImg(https:...
閱讀 2344·2021-11-23 09:51
閱讀 1999·2021-10-14 09:43
閱讀 2760·2021-09-27 13:35
閱讀 1144·2021-09-22 15:54
閱讀 2495·2021-09-13 10:36
閱讀 3785·2019-08-30 15:56
閱讀 3404·2019-08-30 14:09
閱讀 1711·2019-08-30 12:57