2012-12-25 34 views
0

我有了這個功能:異常而從一個字節的緩衝區去一個字符串

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」。這怎麼會發生?

+1

請使用此鏈接: http://stackoverflow.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa –

+0

如果ricintech的答案不起作用,那麼那裏必須是您正在生成的Byets的問題.... –

+0

它看起來好像編碼有問題:如果我添加編碼,則不生成異常。但是:1)雖然我不能記錄異常,並且2)哪個是正確的編碼?如果我將文件傳輸到我的電腦,Notepad ++將其打開爲不帶BOM的UTF-8,並顯示OK。但是,如果我使用新的字符串(緩衝區,「UTF-8」),則無法正確顯示非ASCII字符。 – user936580

回答

1

主要的一點,同時從字節串轉換認爲是在轉換中使用的編碼。

你已經正確編碼了一些ricintech提到的東西是有用的,但重點是按照我們在上面討論過的評論中的標準。

0

使用此:

byte[] buffer = new byte[4096]; 
receivedData=new String(buffer); 
+0

我不明白這可以提供什麼幫助:這是我做的,但沒有閱讀文件,我不能拿出。 – user936580

相關問題