我有了這個功能:異常而從一個字節的緩衝區去一個字符串
public static String read(Context context) {
FileInputStream fis;
try {
fis = context.openFileInput(INFO_FILE_NAME);
int bufferSize = 2 * 1024 * 1024; // 2 MiB
byte[] buffer = new byte[bufferSize];
fis.read(buffer);
return new String(buffer);
} catch (Exception e) {
Log.d(TAG,
"Exception while reading General Information File:"
+ e.getMessage());
return null;
}
}
該函數返回null。這意味着有一個例外。但是,沒有任何內容記錄到LogCat。
我試着用Eclipse調試它。一切正常,直到「返回新的字符串(緩衝區);」線。當我嘗試執行它時,調試器直接跳轉到「返回null」。行,而不需要通過「Log.d」。另外,當我在「返回null」時行,我不能在調試器中看到變量「e」。這怎麼會發生?
請使用此鏈接: http://stackoverflow.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa –
如果ricintech的答案不起作用,那麼那裏必須是您正在生成的Byets的問題.... –
它看起來好像編碼有問題:如果我添加編碼,則不生成異常。但是:1)雖然我不能記錄異常,並且2)哪個是正確的編碼?如果我將文件傳輸到我的電腦,Notepad ++將其打開爲不帶BOM的UTF-8,並顯示OK。但是,如果我使用新的字符串(緩衝區,「UTF-8」),則無法正確顯示非ASCII字符。 – user936580