2017-03-21 2 views
1

현재 Java 게임을 작성 중이며 일부 데이터를 파일에 저장해야합니다. 나는 파일을 읽고 쓰는 데 DataInputStreamDataOutputStream을 사용하고 있습니다. 그러나 작성해야하는 대부분의 데이터는 기본 유형이지만 일부 열거 형은 파일에 저장해야합니다. DataStream을 사용하여 열거 형을 읽고 쓸 수있는 방법이 있습니까?DataOutputStream을 사용하여 파일에 열거 (Enum) 쓰기

답변

1

단순히 writeUTF(String str) 방법을 사용하십시오. 그리고 enum 자체는 작성하지 말고 문자열 표현을 작성하십시오. 열거 형 객체의 name() 메서드를 호출하는 등의 작업을 수행 할 수 있습니다.

물론,이 문자열을 열거 형 상수로 다시 변환하려면 "읽기"부분에 약간의 코딩이 필요합니다. 그러나 그것은 당신이 당신의 에너지를 소비하고 싶은 곳입니다.

추악한 진실은 : Java enums와 serialization이 실제로 불쾌한 주제입니다. 주의를 기울이지 않으면 매우 열심히 버전 관리 충돌을 소개합니다.

의미 : 대부분의 사람들이 사용하는 "정상적인"방법 : "일반적인"개체 직렬화; 바이트 스트림을 만든다. 그 바이트를 DataOutputStream에 기입합니다. 하지만이 작업을 수행하려면 열거 형 클래스 파일을 양쪽 끝에서 일치시켜야합니다. 그렇지 않은 경우, Java 직렬화 프레임 워크에서 예외가 발생합니다. 처리 할 하드 일 수 있습니다.

짧은 이야기이므로 enum을 직접 직렬화하지 말고 문자열을 보내십시오.

+0

"문자열 표현"당신이'name()'또는'toString()'을 의미하는지 명확히하십시오. –

+0

지출하고자하는 시간에 따라 둘 다 작동해야합니다. 하지만 네, name()이 더 잘 작동합니다. 그래서 나는 나의 대답을 업데이트했다. – GhostCat

관련 문제