utf-8 - Java 將int型數(shù)據(jù)用FileWriter寫入文件,文件數(shù)據(jù)錯誤?
問題描述
(我知道我題目寫得很含糊,因為實在不知道怎么描述了)
事情的起因是,用 Java 開發(fā)了一個 Android APP,其中有一個功能是用 FileWriter 將 int 型數(shù)據(jù)寫入一個數(shù)據(jù)文件。這個數(shù)據(jù)文件是用 File 的 createNewFile(String filename) 方法建立的,寫入文件的數(shù)據(jù)都是 int 型。(FileWriter 的 write(int) 方法)
為了后續(xù)處理方便,數(shù)據(jù)文件中各個數(shù)據(jù)段使用 4 個 (int)-1 做為分割(寫在每個數(shù)據(jù)段的前面)。這樣邏輯上來講,這個文件的前 16 個字節(jié)應(yīng)該都是 ff 。但實際上的數(shù)據(jù)文件是這樣的:
看見熟悉的錕斤拷,像是 UTF8 編碼錯誤,但是又不是很了解,如果用 write 寫入的 int 為什么會有編碼錯誤,又不是將 String 寫入文件。
所以請教一下大家,這種情況應(yīng)該怎么辦(純 int 數(shù)據(jù)文件)?還有什么方法將數(shù)據(jù)讀出來嗎?
先謝過了!
問題解答
回答1:FileWrite的Write(int)方法 無法寫入純int文件的 因為這里的int實際上是char字符,當你的int數(shù)據(jù)在unicode碼表里找不到對應(yīng)的char值時就會出現(xiàn)亂碼的。你可以提供一個toString方法轉(zhuǎn)成字符串想寫入真正的int數(shù)據(jù)
File file = new File('b.txt');FileWriter fw = new FileWriter(file);fw.write((Integer.toString(87)));
