딥 클론: ObjectInputStream, ObjectOutputStream 및 ByteArrayOutputStream
bout = new ByteArrayOutputStream(); //
ObjectOutputStream oos = null; //
ObjectInputStream ois = null;
oos = new ObjectOutputStream(bout);
oos.writeObject(oldValue); // ,
ByteArrayInputStream bin = new ByteArrayInputStream(bout.toByteArray());
ois = new ObjectInputStream(bin); // ,
newValue = (Serializable) ois.readObject();
Byte Array Output Stream 클래스는 출력 흐름을 실현했고 그 중의 데이터는byte 그룹에 기록되었다.버퍼는 데이터를 계속 쓰기 때문에 자동으로 증가합니다.toByteArray () 와 toString () 을 사용하여 데이터를 얻을 수 있으며, 출력 흐름에 저장된 유효한 데이터의 현재 크기입니다.예를 들면 다음과 같습니다. int a = 0,b = 1,c = 2;
ByteArrayOutputStream bout = new ByteArrayOutputStream();
bout.write(a);
bout.write(b);
bout.write(c);
byte[] buff = bout.toByteArray();
for (int i = 0; i < buff.length; i++)
System.out.println(buff[i]);
출력 결과: 0, 1, 2.자바와 같은 대상을 대상으로 하는 언어는 프로그래밍을 할 때 데이터가 대부분 대상에 저장된다. 때로는 메모리에 있는 모든 대상을 파일에 쓰고 적당한 시기에 파일의 대상을 메모리로 복원해야 한다. 위 코드에 나타난 ObjectInputStream과 ObjectOutputStream 두 종류로 이 작업을 완성할 수 있다.
서열화는 대상의 상태 정보를 저장하거나 전송할 수 있는 형식으로 바꾸는 과정을 말한다.서열화 기간에 대상은 현재 상태를 임시 또는 지속적인 저장소에 기록합니다.나중에 저장소에서 객체의 상태를 읽거나 반서열화하여 객체를 다시 작성할 수 있습니다.서열화가 필요한 대상은 반드시 Serializable 인터페이스를 실현해야 한다.Serializable 인터페이스는 추상적인 방법이 없습니다. 이 인터페이스를 실현하는 것은 컴파일러에게 이 대상이 서열화될 것임을 알리기 위해서입니다.대상의transient와static 형식 구성원 변수는 읽거나 쓰지 않습니다.ObjectInputStream은 원래 데이터와 ObjectOutputStream을 사용하기 전에 쓴 대상을 반서열화하고, ObjectInputStream은 이전에 서열화된 대상을 복원하는 데 사용됩니다.
상기 코드는 ByteArray OutputStream을 통해 메모리에 있는 캐시 데이터를 가져와 그룹으로 전환한다.ByteArrayInputStream은 바이트 배열을 입력 흐름으로 바꿉니다.
실제 데이터 흐름: Object OutputStream->ByteArray OutputStream->ByteArray InputStream->Object InputStream, 깊이 있는 복제는 서열화 대상에서 서열화 대상으로 전환
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Asp와 XML로 상호작용하는 실례 원본XML은 표준 확장 언어로 미래 웹 프로그래밍의 표준이다. asp는 현재 널리 전해지는 웹 프로그래밍 언어 중의 하나이다. 그들 두 사람이 연합하여 역할을 발휘할 수 있을까?두부는 여기서 여러분에게 아주 간단한 As...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.