2014-03-03 4 views
1

현재 파일 출력을 수행하고 그 파일을 읽는 대신에 객체를 직렬화하도록 선택하는 이유는 현재 알지 못합니다. 객체를 직렬화하면 무엇을 얻을 수 있습니까?파일 출력을하는 대신 객체를 직렬화하는 이유는 무엇입니까?

+0

아마도 둘 다 직렬화로 간주 될 수 있습니다. 객체의 상태를 유지/재구성하는 방법의 세부 사항은 실제로 직렬화를 정의하지 않습니다. 예를 들어, 객체를 YAML이나 XML 또는 바이너리 파일로 직렬화 할 수 있지만 모두 직렬화 형식입니다. 그것은 정말로 단지 '인간이 읽을 수있는'/ 휴대용 당신이 지속 된 데이터를 원하는 방법과 번역 논리에 지출하려는 시간에 따라 달라집니다. –

답변

2

거의 모든 프로그래밍 언어로 독자와 작성자를 거의 보편적으로 지원하는 W3C 승인 데이터 교환 형식을 사용하여 업계 표준 방법으로 개체 데이터를 읽고 쓸 수 있습니다.

+0

당신의 대답은 나의 것보다 낫습니다. 그것은 첫 번째 자리에 있어야합니다. – rpax

1

연속화를 사용하면 과 그 안에있는 객체의 상태를 쉽게 저장할 수 있습니다 (Serializable이고 transient으로 표시되지 않은 경우). 귀하의 경우에

장점은 :

당신이 다른 클래스를 많이 가지고 상상해보십시오. 아마 사용자 정의 File-to-class 파서 코딩입니다 세게 objectserialize, 당신이 stream로 메모리에 실제 byte 데이터를 복사 할 때 readObject()

0

보다. de-serialize 그 스트림을 다시 object로 보내면 내부 객체 ID를 포함하여 동일한 객체를 다시 얻습니다.이 객체는 파일의 객체 속성을 작성한 다음 다시 읽어 들여 해석하면 얻을 수 없습니다.

이 의미, 당신 serialize 당신 de-serialize 그들, 그들은 여전히 ​​references 서로 유지 objectsreference 서로의 수집, 경우. 이것은 프로그램 디버깅에도 유용합니다. 예외가 발생하면 사용자 컴퓨터에서 메모리 덤프를 만들 수 있으며, 사용자가 메모리 덤프를 보내면 메모리에 있던 내용과 발생한 문제를 직접 볼 수 있습니다.

또한 당신이해야합니다 대표적인 데이터의 일부 string 다시 읽을 수 있도록 구축 구문 분석과 함께 새로운 object를 구성하는 것보다 stream 많은 특성을 가진 serialize 복잡한 object에 용이하다.

실제로 얻는 것은 디버깅이 더 쉽고 빠르며 더 좋습니다.

관련 문제