java的io包詳解


 

 

 

 

 

 

AA

首先來說一下讀的問題。

從文件中讀取數據,有兩種方法:

一種是使用FileInputStream,一種是使用FileReader。

FileInputStream:將文件以二進制流的形式讀入到stream中,這里首先需要注意的是文件不單單指的是文本文件還包括圖片,影音等任何在計算機上存儲的文件。如果是文本文件,比如該文本的文件編碼是UTF-8編碼,則讀入的流就是文本中所有字符的UTF-8編碼的字符,如果是GBK,則讀入的文件就是GBK編碼的流。

如果想要將文件轉化為字符形式,則需要使用InputStreamReader這個類,它是字節和字符之間的橋梁。在InputStreamReader中,可以指定將字節轉化為字符的編碼形式,比如下面的一條語句。

InputStreamReader  isr = new InputStreamReader(new FileInputStream(“text.txt”),”UTF-8”);就是將讀入的字節流以UTF-8的形式轉化為字符。

一般我們還會使用BufferReader這個類,這個類有很多實用性很強的函數,它以Reader作為構造函數的參數。

下面來說一下FileReader:

和FileInputStream一樣,它也是以string和file來作為自己的參數。不同的是:1,文件格式比較少,只能是文本格式,而不能是圖片或者影音等。2.如果FileReader所在的java源代碼是UTF-8格式,而讀取的文本是GBK編碼,則會出現亂碼,java源代碼和讀取的文本文件的編碼必須是一樣的,不然會出現亂碼,如果沒有中文字符,則在有的情況下是不出現亂碼的。

這里還要說一下java中的編碼格式,java涉及到兩種編碼源文件編碼和class編碼,操作系統的編碼可以不用考慮。

1,使用string.getbytes()得到的是這個string的java源文件的編碼,這里做了一個轉化,stirng在class中是unicode編碼的,先轉化為java源文件所對應的編碼,然后得到結果。

2.new string(byte[]),默認是按照java源文件的編碼來轉換。

3.  char(int):


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM