JAVA中IO流物件之轉換流

2021-08-15 23:11:35 字數 926 閱讀 4088

我們平常可能會遇到這樣的問題,我們在以前用位元組流字元流儲存的時候字元編碼都是預設按系統的編碼儲存的,我們的電腦

是gbk簡體中文,但有時候我們需要別的字元編碼,像utf-8,這時候讀取的檔案就可能是亂碼了。

這時候,io的轉換流就派上用場了。

兩個新的io流類,outstreamwriter和inputstreamreader,看名字就知道了,乙個是寫入,乙個是讀取了。

下面來說寫入,**:

public static void utfset()throws ioexception
關鍵的就是這兩句:

fileoutputstream fos = new fileoutputstream("f:\\a\\aa.txt");

outputstreamwriter osw = new outputstreamwriter(fos,"utf-8");

先建立fileoutstream物件,然後當做引數,在outputstreamwriter的構造引數傳進去,並設定需要的編碼。預設是gbk。

在main()函式呼叫即可。

注意:在gbk中乙個漢字是兩個位元組,但在utf-8中是3個位元組,所以我們可以看文字大小就可以知道是什麼編碼,這裡我們設定的是utf-8的,兩個漢字,我們看文字大小是6個位元組,所以很明顯是utf-8的格式。

下面,我們說說流轉換讀取:

public static void utfget()throws ioexception
實際跟位元組字元的讀取很像,只是多了個轉換流,並指定編碼格式。如果這裡我們不知道utf-8格式,我們在main函式先執行utfset()函式,在執行utfget()函式,我們會發現亂碼,如下:

浣犲ソ錛
差不多就是這些,如果有繼續補充

IO流之轉換流

查閱outputstreamwriter的api介紹,outputstreamwriter 是字元流通向位元組流的橋梁 可使用指定的字元編碼表,將要寫入流中的字元編碼成位元組。它的作用的就是,將字串按照指定的編碼表轉成位元組,在使用位元組流將這些位元組寫出去。public static void w...

java之IO流(緩衝流 轉換流)

緩衝流是在位元組流或字元流的基礎上,新增了乙個緩衝區。緩衝流相對於位元組流和字元流有一些優點 案例 try bufferedinputstream bis newbufferedinputstream new fileinputstream source bufferedoutputstream b...

IO流(字元流 轉換流)

字元輸入流 public inputstreamreader inputstream in 預設的編碼格式 一般使用這個 public inputstreamreader inputstream in,string charsetname 指定的編碼格式 字元輸入流 位元組輸入流 編碼表 將位元組流...