2012-12-25 35 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

相关问题