다음 프로그램은 String
"Humpty Dumpty가 벽에 있었고 \ Humpty Dumpty가 큰 폭으로 떨어졌습니다."라고 인쇄해야합니다. 파일에 저장하고 다시 입력하십시오.FileInputStream을 사용하는 파일 입력이 제대로 작동하지 않습니다.
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
public class ByteIO {
/**
* @param args
*/
public static void main(String[] args) {
String output = "Humpty Dumpty sat on a wall,\n Humpty Dumpty had a great fall.";
System.out.println("Output String : " + output);
try(PrintStream out = new PrintStream("F:\\Test.txt")) {
out.println(output);
} catch(FileNotFoundException e) {
e.printStackTrace();
}
String input = "";
try(FileInputStream in = new FileInputStream("F:\\Test.txt")) {
while(in.read() != -1)
input += (char)in.read();
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e) {
e.printStackTrace();
}
System.out.println("Input String : " + input);
}
}
그러나, 나는이 FileInputStream
에서 얻은 String
"는 nawl는 upyDmt Ra로 알을 upyDmt?"이었다! 또한, "Test.txt"파일을 열면 출력이 String
이되어 "Humpty Dumpty가 벽에 앉아서 Humpty Dumpty가 큰 가을을 보았습니다." 한 줄에. \n
은 어디로 갔습니까?
while(in.read() != -1)
input += (char)in.read();
이 두 문자 하나가 아닌 각각의 반복을 읽고, 그래서 당신은 효과적으로 캐릭터마다 폐기됩니다
\ n은 있지만 편집자가 표시하지 않을 수도 있습니다. 당신의 입력에 관해서 : 매 2 번째 문자 만 전달하는 한 당신의 루프는 망가져 있습니다. – Ingo
파일을 쓰거나 읽는 사이에는 파일을 닫아야합니다. –
@JavaNewbie는 해결책을 찾았을 때 항상 대답을 수락합니다. – Ravi