[英]Byte Stream and Character stream
請解釋什么是字節流和字符流。 這些到底是什么意思? Microsoft Word文檔是面向字節還是面向字符?
謝謝
流是順序訪問文件的一種方式。 字節流逐字節訪問文件。 字節流適用於任何類型的文件,但不適用於文本文件。 例如,如果文件使用unicode編碼,並且一個字符用兩個字節表示,則字節流將分別處理這些字節,您需要自己進行轉換。
字符流將逐字符讀取文件。 字符流需要使用文件的編碼才能正常工作。
盡管Microsoft Word文檔包含文本,但是無法使用字符流(它不是文本文件)進行訪問。 您需要使用字節流來訪問它。
ByteStreams :
從oracle文檔頁面中有關字節流的信息 :
程序使用字節流執行8位字節的輸入和輸出。 所有字節流類都從
InputStream
和OutputStream
繼承。
何時使用:
字節流僅應用於最原始的I / O
何時不使用:
您不應使用字節流讀取字符流
例如讀取文本文件
字符流:
從oracle文檔頁面中有關字符流的信息 :
Java平台使用Unicode約定存儲字符值。 字符流I / O自動將此內部格式與本地字符集轉換。
所有字符流類均來自Reader
和Writer
。
字符流通常是字節流的“包裝器”。 字符流使用字節流執行物理I / O,而字符流則處理字符和字節之間的轉換。
有兩個通用的字節到字符“橋”流: InputStreamReader
和OutputStreamWriter
。
何時使用:
從Socket
或字符File
中讀取字符流
總結 :
字節流一次讀取和寫入一個字節。 在處理更復雜的數據時,我們必須避免使用字節流。
字符流和其他可用流應用於處理復雜的數據。
1.面向字符與數據類型相關。 只能讀取字符串類型或字符類型,而面向字節的數據不與任何數據類型綁定,可以讀取任何數據類型的數據(字符串除外),只需指定即可。
2.面向字符的讀取字符,而面向字節的讀取字節
3,面向字符的流使用字符編碼方案(UNICODE),而面向字節的流不使用任何編碼方案
4.面向字符的流也稱為讀取器和寫入器流面向字節的流被稱為數據流-數據輸入流和數據輸出流
閱讀此 。 它告訴您字節和字符之間的區別(以及其他有用內容的負載)
字符流將逐字符讀取文件。 字符流可以讀取16位字符(字節流可以讀取8位字符)。 字符流能夠將8位數據隱式轉換為16位數據,反之亦然。 字符流可以支持所有類型的字符集ASCII,Unicode,UTF-8,UTF-16等,但是字節流僅適用於ASCII字符集.Java平台使用Unicode約定存儲字符值。 字符流I / O自動將此內部格式與本地字符集轉換。
除非使用圖像和聲音文件等二進制數據,否則應使用讀取器和寫入器通過字符流讀取和寫入信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.