一、讀取檔案內容的三種方式
1、檔案的讀取
主要介紹兩種常用的讀取方法。按行讀取和按字元塊讀取。
1.1 一次讀取一行作為輸入
//按行讀取檔案內容
public static string read1(string infile) throws exception //infile="data/in.txt"
br.close();
return sb.tostring();
}
1.2 一次讀取指定大小的字元塊
關於一次讀取乙個字元的方法就不講了,感覺這種方法效率太低了!
//以字元塊讀取檔案
public static string read2(string infile) throws exception
fis.close();
return sb.tostring();
}
2、檔案的寫入
關於檔案的寫入,主要有三種方法,分別使用filewriter、fileoutputstream和bufferedoutputstream。
根據乙個網友的測試結果,在這三種方法中,使用filewriter速度最快,而使用fileoutputstream速度最慢。
2.1 使用filewriter函式寫入資料到檔案
//效能最好
public static void write1(string file, string text) throws exception
2.2 使用fileoutputstream函式寫入
//三種方法中效能最弱
public static void write2(string file, string text) throws exception
2.3 使用bufferedoutputstream函式寫入
//這三種方法中,效能中等
public static void write3(string file, string text) throws exception
二、兩種方式:解決中文亂碼
為什麼io流讀寫中可能會出現亂碼問題?
①這個字元編碼不支援某種語言(ex:中文)
②編碼和解碼規則不一致
所以,解決方式如下:
1.利用」gbk」使字元編碼支援中文的格式
system.out.print(new string(bytes,「gbk」));
2.轉換流
出現中文亂碼的原因,大多是編碼和解碼規則不一致,利用轉換流可以有效地將字元轉換成想要的結果。
(1)編碼 : string —> byte
string中有對應的方法:
①:byte getbytes() : 使用平台的預設字符集將此 string編碼為 byte 序列
②:byte getbytes(charset charset) : 使用指定的字元編碼來編碼字串
③:byte getbytes(string charsetname) : 使用指定的字元編碼來編碼字串
(2)解碼 : byte —> string
string中有對應的構造方法:
①:string(byte bytes) : 通過使用平台的預設字符集解碼指定的 byte 陣列
②:string(byte bytes, charset charset) : 使用指定的字符集來解碼指定的byte陣列
③:string(byte bytes, string charsetname) : 使用指定的字符集來解碼指定的byte陣列
解決IO流讀取檔案亂碼問題
讀取檔案時,出現亂碼,檔案是txt格式,編碼格式預設為ansi格式,即gbk 於是轉為utf 8 inputstreamreader reader new inputstreamreader new fileinputstream new file 檔案路徑 utf 8 但是貌似不支援符號,空格等,...
QT QSettings讀取檔案中文亂碼
在寫程式的時候,有些內容是需要寫到配置檔案中的,但是有些時候我們讀出來的時候就出現了中文亂碼的情況,經過一番折騰後,發現qsettings有這麼乙個方法可以解決亂碼的問題 setinicodec qsettings configini new qsettings setting.ini qsetti...
解決使用Properties讀取中文亂碼問題
web服務返回的是多行以key和value對應的鍵值對,且編碼為utf 8。我的專案使用的編碼也是utf 8,但是我用properties讀取中文的時候,列印出來的總是亂碼。後來網上查了一下,得到如下結論 properties 預設是按iso 8859 1讀取的,所以如果你想讓它按照你想的格式顯示就...