我有了这个功能:异常而从一个字节的缓冲区去一个字符串
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