我想創建一個程序,它允許我從本地文件獲取名稱並將它們添加到名稱的字符串數組中。我並不完全理解字符流,二進制流和緩衝流之間的區別,並且在線查看並未回答我的問題,即:我將使用哪種類型的流從文本文件中讀取以創建字符串數組?Java - 字符和字節流
回答
我不完全理解字符流,二進制流之間的差異,以及緩衝流
緩衝器這裏有一個紅色的鯡魚 - 這只是一個實現細節,往往使事情更加有效。瞭解您是否正在讀取二進制數據或文本數據很重要。如果你正在閱讀一個文本文件,你需要一個Reader
的一些描述。您的文件包含二進制數據(所有文件基本上都是字節),您需要說明如何將其轉換爲文本。你可能使用FileReader
,但我寧願使用包裝在InputStreamReader
中的FileInputStream
,因爲您可以指定編碼在二進制文本和文本之間進行轉換。您需要知道文件的編碼,例如UTF-8。
任何InputStream
只返回二進制數據;和Reader
返回文本數據。
無論哪種方式,如果你想讀一行行(現在還不清楚你的陣列將包括),你會希望有一個BufferedReader
來包裝你InputStreamReader
或FileReader
,因爲它提供了readLine()
方法。
嗯,那麼爲什麼人們會使用字節流,如果我們都使用字符。
我們沒有。圖像文件,音樂,視頻,壓縮數據,加密數據等不是固有的文本數據。如果您閱讀Reader
的圖像文件,則幾乎肯定會丟失一些數據。
將文本視爲另一種文件格式 - 如果您嘗試加載圖像以顯示它,則需要理解該圖像文件格式的內容;如果您試圖加載音樂文件來播放音樂文件,那麼您需要了解音頻文件格式的內容 - 使用文本,InputStreamReader
可以理解文本。
儘管在所有情況下我們都在文件級別有字節,但您使用的類將決定如何解釋這些字節。
非常感謝!這有很大幫助 – bob
區別很簡單。根據這一tutorial
- Byte Streams手柄原始二進制數據的I/O。
- Character Streams處理字符數據的I/O,自動處理往返於本地字符集的翻譯。
- Buffered Streams通過減少對本機API的調用次數來優化輸入和輸出。
- 1. 字節流和字符流
- 2. Java - 字節流與字符流?
- 3. Java讀取文件,字節流和字符流之間的性能差異
- 4. Java字符串 - UTF和字節表示
- 5. Java字節[]到字符串和UTF-8
- 6. 字符串和字節[]問題的java
- 7. 跟蹤java字節碼流
- 8. java中的字節流
- 9. 將無符號字節流轉換爲有符號字節流Golang
- 10. Java字節到字符串
- 11. 字符串字節在Java
- 12. 字節到字符串| Java
- 13. Java字符串到字節
- 14. 流到UTF8字符串,沒有字節[]
- 15. Telnet流的字節到字符轉換
- 16. C++字節流
- 17. 從ac#中輸入帶有字符/字符串/字節流的java類
- 18. Objective-C的字節[]和Java字節[]
- 19. 字符串到字節[]和字節[]字符串
- 20. 字節流中字符的數字索引
- 21. 把字符串和字符在流中
- 22. Java - 搜索字符串字節代碼
- 23. Java的字符串轉換字節
- 24. Java |二進制字符串到字節
- 25. Java - 將字節[]轉換爲字符串
- 26. Java字節[]到/從字符串轉換
- 27. 字符串到字節轉換在java
- 28. Java中的雙字節字符
- 29. Coverting字符串字節中的Java
- 30. Java讀取字符串爲字節[]
這是關於如何流實現威脅傳入的數據,例如。你能夠將數據作爲字節數組,或者作爲單個字符(並不總是單個字節)。總而言之,所有的流都基本相同。 – Antoniossss
嗯,那麼爲什麼人們會使用字節流,如果我們都使用字符。 AKA這個字節流從哪裏來? – bob
如果你不想使用字符...如果你只是想讀/寫原始/二進制數據..你使用字節流...檢查.. http://docs.oracle.com/javase/tutorial/i18n /text/stream.html http://stackoverflow.com/questions/8431787/whats-the-difference-between-character-stream-and-byte-stream – TheLostMind