Share via


ObjectOutputStream 클래스

정의

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

[Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)]
public class ObjectOutputStream : Java.IO.OutputStream, IDisposable, Java.Interop.IJavaPeerable, Java.IO.IObjectOutput
[<Android.Runtime.Register("java/io/ObjectOutputStream", DoNotGenerateAcw=true)>]
type ObjectOutputStream = class
    inherit OutputStream
    interface IObjectOutput
    interface IDataOutput
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
상속
ObjectOutputStream
특성
구현

설명

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다. 개체는 ObjectInputStream을 사용하여 읽을 수 있습니다(재구성). 스트림에 대한 파일을 사용하여 개체의 영구 스토리지를 수행할 수 있습니다. 스트림이 네트워크 소켓 스트림인 경우 개체를 다른 호스트 또는 다른 프로세스에서 재구성할 수 있습니다.

java.io.Serializable 인터페이스를 지원하는 개체만 스트림에 쓸 수 있습니다. 각 serialize할 수 있는 개체의 클래스 이름 및 시그니처, 개체의 필드 및 배열 값, 초기 개체에서 참조된 다른 개체의 닫기를 포함하여 인코딩됩니다.

writeObject 메서드는 스트림에 개체를 쓰는 데 사용됩니다. 문자열 및 배열을 포함한 모든 개체는 writeObject로 작성됩니다. 여러 개체 또는 기본 형식을 스트림에 쓸 수 있습니다. 개체는 동일한 형식의 해당 ObjectInputstream에서 기록된 것과 동일한 순서로 다시 읽어야 합니다.

DataOutput의 적절한 메서드를 사용하여 기본 데이터 형식을 스트림에 쓸 수도 있습니다. writeUTF 메서드를 사용하여 문자열을 작성할 수도 있습니다.

개체에 대한 기본 serialization 메커니즘은 개체의 클래스, 클래스 서명 및 모든 비 일시적 및 비정적 필드의 값을 씁니다. 다른 개체(일시적 또는 정적 필드 제외)에 대한 참조로 인해 해당 개체도 작성됩니다. 단일 개체에 대한 여러 참조는 참조 공유 메커니즘을 사용하여 인코딩되므로 개체 그래프를 원본이 작성되었을 때와 동일한 셰이프로 복원할 수 있습니다.

예를 들어 ObjectInputStream: <br의 예제에서 읽을 수 있는 개체를 작성합니다.>

FileOutputStream fos = new FileOutputStream("t.tmp");
                 ObjectOutputStream oos = new ObjectOutputStream(fos);

                 oos.writeInt(12345);
                 oos.writeObject("Today");
                 oos.writeObject(new Date());

                 oos.close();

직렬화 및 역직렬화 프로세스 중에 특수 처리가 필요한 클래스는 이러한 정확한 서명을 사용하여 특수 메서드를 구현해야 합니다. <br>

private void readObject(java.io.ObjectInputStream stream)
                throws IOException, ClassNotFoundException;
            private void writeObject(java.io.ObjectOutputStream stream)
                throws IOException
            private void readObjectNoData()
                throws ObjectStreamException;

writeObject 메서드는 해당 readObject 메서드가 복원할 수 있도록 특정 클래스에 대한 개체의 상태를 작성합니다. 메서드는 개체의 슈퍼클래스 또는 서브클래스에 속하는 상태와 관련이 없습니다. 상태는 writeObject 메서드를 사용하거나 DataOutput에서 지원하는 기본 데이터 형식에 대한 메서드를 사용하여 ObjectOutputStream에 개별 필드를 작성하여 저장됩니다.

serialization은 java.io.Serializable 인터페이스를 구현하지 않는 개체의 필드를 작성하지 않습니다. 직렬화할 수 없는 개체의 하위 클래스를 serialize할 수 있습니다. 이 경우 직렬화할 수 없는 클래스에는 해당 필드를 초기화할 수 있도록 하는 no-arg 생성자가 있어야 합니다. 이 경우 하위 클래스는 직렬화할 수 없는 클래스의 상태를 저장하고 복원해야 합니다. 해당 클래스의 필드에 액세스할 수 있거나(퍼블릭, 패키지 또는 보호됨) 상태를 복원하는 데 사용할 수 있는 get 및 set 메서드가 있는 경우가 많습니다.

NotSerializableException을 throw하는 writeObject 및 readObject 메서드를 구현하여 개체의 직렬화를 방지할 수 있습니다. 예외는 ObjectOutputStream에 의해 catch되고 serialization 프로세스를 중단합니다.

Externalizable 인터페이스를 구현하면 개체가 개체의 직렬화된 양식의 내용과 형식을 완전히 제어할 수 있다고 가정할 수 있습니다. externalizable 인터페이스의 메서드인 writeExternal 및 readExternal은 개체 상태를 저장하고 복원하기 위해 호출됩니다. 클래스에서 구현되는 경우 ObjectOutput 및 ObjectInput의 모든 메서드를 사용하여 자신의 상태를 작성하고 읽을 수 있습니다. 발생하는 모든 버전 관리를 처리하는 것은 개체의 책임입니다.

열거형 상수는 일반 직렬화 가능 또는 외부화 가능 개체와 다르게 직렬화됩니다. 열거형 상수의 직렬화된 형식은 전적으로 해당 이름으로 구성됩니다. 상수의 필드 값은 전송되지 않습니다. 열거형 상수를 serialize하기 위해 ObjectOutputStream은 상수의 이름 메서드에서 반환된 문자열을 씁니다. 직렬화 가능하거나 외부화할 수 있는 다른 개체와 마찬가지로 열거형 상수는 이후에 serialization 스트림에 나타나는 백 참조의 대상으로 작동할 수 있습니다. 열거형 상수가 serialize되는 프로세스는 사용자 지정할 수 없습니다. 열거형 형식으로 정의된 클래스별 writeObject 및 writeReplace 메서드는 serialization 중에 무시됩니다. 마찬가지로 serialPersistentFields 또는 serialVersionUID 필드 선언도 무시됩니다. 모든 열거형 형식에는 고정 serialVersionUID가 0L입니다.

직렬화 가능한 필드와 외부화 가능한 데이터를 제외한 기본 데이터는 블록 데이터 레코드의 ObjectOutputStream에 기록됩니다. 블록 데이터 레코드는 헤더 및 데이터로 구성됩니다. 블록 데이터 헤더는 표식과 헤더를 따를 바이트 수로 구성됩니다. 연속된 기본 데이터 쓰기는 하나의 블록 데이터 레코드로 병합됩니다. 블록 데이터 레코드에 사용되는 차단 요소는 1024바이트입니다. 각 블록 데이터 레코드는 최대 1024바이트까지 채워지거나 블록 데이터 모드가 종료될 때마다 기록됩니다. ObjectOutputStream 메서드 writeObject, defaultWriteObject 및 writeFields에 대한 호출은 처음에 기존 블록 데이터 레코드를 종료합니다.

JDK1.1에 추가되었습니다.

에 대한 Java 설명서입니다 java.io.ObjectOutputStream.

이 페이지의 일부는 만들고 공유하며 에 설명된 조건에 따라 사용되는 작업을 기반으로 수정됩니다.

생성자

ObjectOutputStream()

ObjectOutputStream을 완전히 다시 구현하는 서브클래스가 이 ObjectOutputStream 구현에서 방금 사용하는 프라이빗 데이터를 할당할 필요가 없도록 하는 방법을 제공합니다.

ObjectOutputStream(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

ObjectOutputStream(Stream)

지정된 OutputStream에 쓰는 ObjectOutputStream을 만듭니다.

속성

Class

Object의 런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
Handle

기본 Android instance 대한 핸들입니다.

(다음에서 상속됨 Object)
JniIdentityHashCode

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
JniPeerMembers

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

PeerReference

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

메서드

AnnotateClass(Class)

서브클래스는 클래스 데이터를 스트림에 저장할 수 있도록 이 메서드를 구현할 수 있습니다.

AnnotateProxyClass(Class)

서브클래스는 동적 프록시 클래스에 대한 설명자와 함께 스트림에 사용자 지정 데이터를 저장하기 위해 이 메서드를 구현할 수 있습니다.

Clone()

이 개체의 복사본을 만들고 반환합니다.

(다음에서 상속됨 Object)
Close()

이 출력 스트림을 닫고 이 스트림과 연결된 모든 시스템 리소스를 해제합니다.

(다음에서 상속됨 OutputStream)
DefaultWriteObject()

현재 클래스의 비정적 및 일시적이지 않은 필드를 이 스트림에 씁니다.

Dispose()

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
Dispose(Boolean)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
Drain()

ObjectOutputStream에서 버퍼링된 데이터를 드레이닝합니다.

EnableReplaceObject(Boolean)

스트림에서 개체를 대체하려면 스트림을 사용하도록 설정합니다.

Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
Flush()

이 출력 스트림을 플러시하고 버퍼링된 출력 바이트를 강제로 작성합니다.

(다음에서 상속됨 OutputStream)
GetHashCode()

개체의 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
PutFields()

스트림에 쓸 영구 필드를 버퍼링하는 데 사용되는 개체를 검색합니다.

ReplaceObject(Object)

이 메서드를 사용하면 ObjectOutputStream의 신뢰할 수 있는 서브클래스가 serialization 중에 한 개체를 다른 개체로 대체할 수 있습니다.

Reset()

다시 설정은 스트림에 이미 기록된 개체의 상태를 무시합니다.

SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
ToArray<T>()

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
UseProtocolVersion(ObjectStreamProtocol)

스트림을 작성할 때 사용할 스트림 프로토콜 버전을 지정합니다.

Wait()

현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다.

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)
Write(Byte[])

b.length 지정된 바이트 배열의 바이트를 이 출력 스트림에 씁니다.

(다음에서 상속됨 OutputStream)
Write(Byte[], Int32, Int32)

오프셋 len 에서 off 시작하는 지정된 바이트 배열의 바이트를 이 출력 스트림에 씁니다.

(다음에서 상속됨 OutputStream)
Write(Int32)

바이트를 씁니다.

WriteAsync(Byte[])

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 OutputStream)
WriteAsync(Byte[], Int32, Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 OutputStream)
WriteAsync(Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 OutputStream)
WriteBoolean(Boolean)

부울을 씁니다.

WriteByte(Int32)

8비트 바이트를 씁니다.

WriteBytes(String)

문자열을 바이트 시퀀스로 씁니다.

WriteChar(Int32)

16비트 문자를 씁니다.

WriteChars(String)

문자열을 문자 시퀀스로 씁니다.

WriteClassDescriptor(ObjectStreamClass)

ObjectOutputStream에 지정된 클래스 설명자를 씁니다.

WriteDouble(Double)

64비트 double을 씁니다.

WriteFields()

버퍼링된 필드를 스트림에 씁니다.

WriteFloat(Single)

32비트 부동 소수를 씁니다.

WriteInt(Int32)

32비트 int를 씁니다.

WriteLong(Int64)

64비트 길이를 씁니다.

WriteObject(Object)

지정한 개체를 ObjectOutputStream에 씁니다.

WriteObjectOverride(Object)

서브클래스가 기본 writeObject 메서드를 재정의하는 데 사용하는 메서드입니다.

WriteShort(Int32)

16비트 짧은 을 씁니다.

WriteStreamHeader()

writeStreamHeader 메서드가 제공되므로 서브클래스가 스트림에 자체 헤더를 추가하거나 앞에 추가할 수 있습니다.

WriteUnshared(Object)

ObjectOutputStream에 "공유되지 않은" 개체를 씁니다.

WriteUTF(String)

이 문자열의 기본 데이터 쓰기는 수정된 UTF-8 형식입니다.

명시적 인터페이스 구현

IJavaPeerable.Disposed()

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
IJavaPeerable.DisposeUnlessReferenced()

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

GetJniTypeName(IJavaPeerable)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteAsync(IDataOutput, Byte[])

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteAsync(IDataOutput, Byte[], Int32, Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteAsync(IDataOutput, Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteBooleanAsync(IDataOutput, Boolean)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteByteAsync(IDataOutput, Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteBytesAsync(IDataOutput, String)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteCharAsync(IDataOutput, Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteCharsAsync(IDataOutput, String)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteDoubleAsync(IDataOutput, Double)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteFloatAsync(IDataOutput, Single)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteIntAsync(IDataOutput, Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteLongAsync(IDataOutput, Int64)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteShortAsync(IDataOutput, Int32)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteUTFAsync(IDataOutput, String)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

FlushAsync(IFlushable)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

FlushAsync(IObjectOutput)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

WriteObjectAsync(IObjectOutput, Object)

ObjectOutputStream은 Java 개체의 기본 데이터 형식 및 그래프를 OutputStream에 씁니다.

적용 대상