2012-12-25 4 views
0

에 byte 버퍼에서가는 동안 :예외 내가이 기능을 가지고 문자열

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로 디버깅하려했습니다. 모든 것은 "return new String (buffer);"까지는 괜찮습니다. 선. 디버거를 실행하려고하면 디버거가 직접 "return null;"로 점프합니다. "Log.d"를 거치지 않고 또한, "return null;에있을 때 라인, 나는 변수 "e"디버거에서 볼 수 없습니다. 어떻게 될 수 있습니까?

+1

http://stackoverflow.com/questions/1536054/how-to-convert-byte-array-to-string-and-vice-versa –

+0

ricintech의 답변이 작동하지 않는 경우 다음 링크를 사용하십시오. .... 당신이 생성하는 Byets에 문제가 있어야합니다. –

+0

인코딩에 문제가있는 것처럼 보입니다. 인코딩을 추가하면 예외가 생성되지 않습니다. 그러나 : 1) 동안 예외를 기록 할 수없고 2) 올바른 인코딩 무엇입니까? 파일을 내 PC로 전송하면 메모장 + +에서 BOM없이 UTF-8로 열리고 확인이 표시됩니다. 그러나 새로운 String (버퍼, "UTF-8")을 사용하면 비 ASCII 문자가 올바르게 표시되지 않습니다. – user936580

답변

1

주요 포인트는 생각은 변환에 사용되는 인코딩입니다.

ricintech가 언급 한 몇 가지 사항을 올바르게 코딩했지만 유용 할 수 있습니다.하지만 요점은 앞서 설명한 주석의 표준을 따르는 것입니다.

0

사용이 : 문자열 바이트로 변환하는 동안

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

이것이 어떻게 도움이 될지 모르겠다. 나는 그것을 할 수는 있지만 파일을 읽지 않고는 빼낼 수 없다. – user936580

관련 문제