我有一個文本文件,其中包含需要預加載到SQLite數據庫中的數據。我保存在res/raw中。爲什麼不使用inputStream讀取外部字符?
我使用readTxtFromRaw()
來讀取整個文件,然後我使用StringTokenizer
類來逐行處理文件。
但是readTxtFromRaw
返回的String
不顯示文件中的外部字符。我需要這些,因爲有些文本是西班牙語或法語。我錯過了什麼嗎?
代碼:
String fileCont = new String(readTxtFromRaw(R.raw.wordstext));
StringTokenizer myToken = new StringTokenizer(fileCont , "\t\n\r\f");
的readTxtFromRaw方法是:
private String readTxtFromRaw(Integer rawResource) throws IOException
{
InputStream inputStream = mCtx.getResources().openRawResource(rawResource);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i = inputStream.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = inputStream.read();
}
inputStream.close();
return byteArrayOutputStream.toString();
}
該文件使用Eclipse創建的,並且所有的字符出現在Eclipse的罰款。
這可能與Eclipse本身有關嗎?我在Watch窗口中設置了一個斷點並檢出了myToken。我試圖手動替換正確的字符(例如í或é),它不會讓我。
其實我右鍵單擊Eclipse Package Explorer中的文件,選擇屬性,並且有一個文本文件編碼選項。選定的UTF-8和一切工作正常。謝謝你。 – Sandy 2011-06-04 20:25:45
是否使用ByteArrayOutputStream相同,因爲它是這樣使用的:BufferedReader reader = new BufferedReader(new InputStreamReader(mCtx.getResources()。openRawResource(rawResource))); ??兩者似乎現在都有效,但我不知道一個人是否比另一個人更好。 – Sandy 2011-06-04 20:28:27
我猜兩種方式都可以,但BufferedReader看起來更好:-)我想它會以更清晰的方式處理編碼。 – rdmueller 2011-06-04 20:34:40