1
writeByte()의 목적이 두 클래스에서 동일하기 때문에. 그러나 둘 다 다른 내용을 쓰고있다. 라인 1은 주석 경우DataOutputStream의 writeByte()와 ObjectOutputStream의 writeByte()가 작성한 바이트가 다른 이유는 무엇입니까?
import java.io.*;
class First
{
public static void main(String[] args) throws IOException
{
FileOutputStream fos = new FileOutputStream("b.txt");
Line 1: ObjectOutputStream oos = new ObjectOutputStream(fos);
Line 2: DataOutputStream oos = new DataOutputStream(fos);
oos.writeByte(65);
oos.close();
FileInputStream fis = new FileInputStream("b.txt");
int x=0;
System.out.println("Output");
while((x=fis.read())!=-1)
{
System.out.println(x);
}
fis.close();
}
}
는, 출력은 다음과 같습니다 2 호선이 주석하는 경우
는, 출력은65
:
172
237
0
5
119
1
65
왜 이러한 차이?
[ObjectOutputStream Javadoc] (https://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html)의 마지막 단락을 읽으십시오. 그것의 꼭대기에, 당신의 코드는 필요한 모든'close' 문을 빠뜨렸다. –
그 이상의 출력이 있어야합니다. 'ObjectOutputStream'은 0xAC와 나머지 스트림 헤더로 시작해야하고 바이트는 65로 끝나야합니다. 출력 스트림을 닫는 것을 잊었습니다. – EJP
@ EJP 감사합니다. –