java字节流转字符流的步骤_字节流-java入门基础笔记-51CTO博客
[14]字節流
一.字節流
1.什么是字節流是IO流中的一種, 可以用來讀寫字節數據.
2.字節流和字符流的區別計算機中存儲任何數據都是以字節的形式, 所以字節流可以讀寫任意類型的數據.
在讀寫的數據是字符的時候, 用字符流更方便.
3.什么時候用字節流, 什么時候用字符流當從一個文本文件中讀取數據, 在程序中當作字符使用時, 或者寫出一段字符數據到文件中時, 使用字符流比較方便.
字符流讀取數據就是字符, 字符流可以直接寫出字符
如果只是讀寫數據, 不轉為字符, 那么就都可以使用字節流.
4.read()方法為什么返回intReader.read() 讀取一個字符, 返回int
InputStream.read() 讀取一個字節, 返回int
為什么不是返回char和byte呢?
Reader.read() 如果返回char, 那么無法表示流末尾, 因為所有的char都有可能在流中出現.
在read方法內部, 將讀取到的char裝入int, 這時正常數據不受影響, 強轉回char之后直接使用, 也可以返回-1代表流末尾了.
InputStream.read() 如果返回byte, 也是無法表示流末尾的, 因為從-128到127中所有值都有可能在流中出現.
在read方法內部, 是將讀取到的字節&255, 正數沒有任何變化, 負數轉為了正數, 這時就可以用-1表示文件末尾了
在真正使用數據時, 只要將轉換后的數強轉回byte即可
5.使用字節流拷貝文件使用FileInputStream和FileOutputStream, 逐個字節拷貝. 效率很低, 不推薦.
* 使用FileInputStream和FileOutputStream, 定義數組作為緩沖區, 一次讀取一個數組, 一次寫出一個數組, 提高效率.
* 使用BufferedInputStream和BufferedOutputStream, 逐個字節拷貝, 但其內部使用了緩沖機制, 速度較快.
二.轉換流
* 1.InputStreamReader當獲取了一個字節輸入流, 希望從中讀取字符數據時, 可以把字節輸入流轉為字符輸入流InputStreamReader
當讀取非平臺默認編碼的字符文件時, FileReader做不到, 只能使用InputStreamReader.
* 2.OutputStreamWriter當獲取了一個字節輸出流, 希望向外寫出字符數據時, 可以把字節輸出流轉為字符輸出流OutputStreamWriter
當寫出非平臺默認編碼的字符文件時, FileWriter做不到, 只能使用OutputStreamWriter
三.標準輸入輸出流
1.System.in標準輸入流, InputStream, 可以從鍵盤輸入讀取字節.
可以使用System.setIn(InputStream)改變標準輸入流的數據源.
2.System.out標準輸出流, PrintStream, 可以向屏幕輸出數據.
可以使用System.setOut(PrintStream)改變標準輸出流的數據目的地.
四.練習1.對文件進行加密.
2.讀寫UTF-8文件.
3.從鍵盤輸入讀取學生考試成績, 對其進行排序, 將結果輸出到stu.txt文件中
總結
以上是生活随笔為你收集整理的java字节流转字符流的步骤_字节流-java入门基础笔记-51CTO博客的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java编写统计玩家总数的程序_JAVA
- 下一篇: 华为鸿蒙系统HarmonyOS手机,华为