바이트 지향 스트림 (FileInputStream)과 문자 지향 스트림 (FileReader)의 동작의 차이점을 이해하려고합니다.InputStream 대 CharacterStream의 동작
내가 겪었 다음 http://docs.oracle.com/javase/tutorial/essential/io/charstreams.html
첫 번째 프로그램 :
`수입 java.io.FileInputStream의; import java.io.FileOutputStream; 가져 오기 java.io.IOException;
import java.io.FileReader;
수입 java.io 패키지 :
공용 클래스 CopyBytes { 공공 정적 무효 메인 (문자열 []에 args)는 IOException가 {
FileInputStream in = null;
FileOutputStream out = null;
try {
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
} ` 두 번째 프로그램을 던졌습니다 FileWriter; 가져 오기 java.io.IOException;
공용 클래스 CopyCharacters { 공공 정적 무효 메인 (문자열 []에 args) 공개 IOException {
FileReader inputStream = null;
FileWriter outputStream = null;
try {
inputStream = new FileReader("xanadu.txt");
outputStream = new FileWriter("characteroutput.txt");
int c;
while ((c = inputStream.read()) != -1) {
outputStream.write(c);
}
} finally {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
}
}
가}
그것은 말한다 : CopyCharacters에서 의 INT 변수에 문자 값을 보유하고 그 마지막 16 비트; CopyBytes에서 int 변수는 마지막 8 비트에 바이트 값을 보유합니다.
제 질문은 : 위의 문장을 c (프로그램에 정의 된 정수) 값이 인쇄되는 동안 확인했습니다. 바이트 스트림에서 바이트 단위로 읽으므로 바이트 값을 가지므로 문자 스트림에서 문자 단위로 읽으 므로 문자 ASCII 값을 갖기 때문에 c 값은 연속 읽기에서 달라야합니다. 그러나 그것은 c의 동일한 값을 부여합니다. 왜?