2014-04-09 2 views
0

처음 파일에 쓰지만 파일의 텍스트가 완전히 잘못 나온다. 번호 대신 (인쇄 할 예정인) 숫자를 인식 할 수없는 문자를 인쇄합니다. 왜 이런 일이 일어나는 지 이해할 수 없습니까? (내 코드에서 print 문은 for 루프 안에 있지만 루프 주변의 "셸"입니다.)파일에 쓰기

논리적 인 설명이 있습니까?

try { 
FileWriter outFile = new FileWriter("newFile.txt", true); 
outFile.write(number); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
+0

문자 인코딩은 지정되지 않았습니다. 문자 인코딩을 지정해야합니다. –

+0

@BoristheSpider :'FileWriter '로는 불가능합니다. ( –

+1

스캐너는 어디에도 쓸 수 없으며, 코드에는 스캐너가 없습니다. 부적절한 것을 소개하지 마십시오. – EJP

답변

4

당신은 Writer.write(int)를 호출하고 있습니다 :

는 단일 문자를 기입합니다. 기입 해지는 문자는, 지정된 정수 값의 하위 16 비트에 격납됩니다. 상위 16 비트는 무시됩니다.

내 생각 엔 그게 이 아니고 원하는 것을 말합니다. 당신은 숫자의 텍스트 표현을 쓰고 싶은 경우에, 당신은 명시 적으로 수행해야합니다

outFile.write(String.valueOf(number)); 

(개인적으로 나는 FIleOutputStream 감싸 OutputStreamWriter를 사용하는 것이 좋습니다 것 같은 다음을 수행 할 수 있습니다 - 그리고해야 - 인코딩을 지정 FileWriter항상은 플랫폼 기본 인코딩을 사용합니다.

+0

감사합니다. , 그 일 :)! 더 나은 해결책이 될 수 있다면 OutputStreamWriter에 대해서도 읽어 볼 것입니다. – user2795095