2013-05-20 4 views
1

Argargarg.Android- 파일에 쓰면 임의의 문자가 표시됩니다.

사용자 입력에서 정보를 얻고 시스템 파일에 쓰려고합니다. 나는 입력을 얻고, getBytes를 호출한다. 그것은 파일에 "null"과 그 이후의 난수 라인을 따라 뭔가를 기록합니다.

 TextView note_input=(TextView) findViewById(R.id.note_input); 
    FileOutputStream fos=null; 
    String newNote=note_input.getText().toString(); 
    Log.w("Debug",newNote); 
    try { 
     fos=openFileOutput("currentNote",Context.MODE_APPEND); 
    } catch (FileNotFoundException e) { 
     //IT_SHOUD_NOT_EXIST 
    } 
    try { 
     Log.w("Debug",newNote.getBytes().toString()); 
     fos.write(newNote.getBytes()); 
     fos.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

내가 어떤 도움을 주셔서 감사합니다 : 나는 문자열로 점점 시도, 운이, 그것은 문자 의 임의의 체인이 없었다 여기에 특정 코드입니다!

+1

로그가 올바른 출력을 기록하고 파일에 문제가 있습니까? –

+0

그렇지 않습니다. 문제는 함수 getBytes입니다. (제 생각에는) – user2402569

+0

출력 파일에 Writer (문자 기반) 대신 OutputStream (바이트 기반)을 사용하는 이유가 있습니까? –

답변

0

String.getBytes는 바이트 배열을 반환하고 toString()을 수행하려고하면 실제로 문자열에 대한 포인터를 쓰고 있습니다. 당신은 이미 문자열

Log.w("Debug",newNote); 

에이 라인

Log.w("Debug",newNote.getBytes().toString()); 

을 변경하고 적절한 로그 출력을해야합니다, 그리고 파일이 이미 제대로 작성해야합니다. 이 도움이와 어둠 속에서 그냥 촬영 작업

+0

무슨 일이 있었는지 확인하려고 시도했습니다. 파일에 기록 된 결과도 잘못되었습니다. – user2402569

+0

하지만 로그가 정확해야합니다. –

0

을 즐길 수 있습니다,하지만 난 문자 인코딩을 지정하지 않고()는 getBytes를 호출하고 알

희망. 출력 파일이 시스템 기본 인코딩과 동일한 문자 인코딩이 아니라면 출력에서 ​​쉽게 횡설수설 할 수 있습니다.

관련 문제