수업 내에 이미지/사운드를 저장하는 가장 좋은 방법은?
-
03-07-2019 - |
문제
응용 프로그램 인스턴스간에 일종의 교환 형식을 개발하여 사용자가 파일에 정보를 저장하고 나중에 복원 할 수 있습니다. 전체 'Exchange 형식'은 직렬화되고 디스크에 기록되는 단일 클래스입니다.
해당 클래스 내에 그래픽/사운드 정보를 저장하는 방법은 무엇입니까? 파일을 .jar에 넣는 것을 피하고 싶습니다.
해결책
클래스에 자원을 바이트 [] 배열로 보관할 수 있습니다. BytearRayInputStream 및 ByTearRayoutputStream을 사용하면 배열을 스트림으로 랩핑하여 리소스를 저장하고 검색 할 수 있습니다.
다른 팁
클래스 내에서 원하는 데이터를 정확하게 저장하지만 데이터에 대한 사용자 정의 직렬화를 구현하십시오. 보다 직렬화 가능.
** 나 **
사건에 대한 자세한 내용은 어떻습니까? "최상의"방법은 일반적으로 특정 응용 프로그램/사용에 따라 다릅니다. 이미지/사운드가 파일에서 나옵니까? 스트림에서? 클래스의 각 인스턴스가 별도의 이미지를 저장해야합니까? 아니면 다른 인스턴스간에 이미지를 공유 할 수 있습니까?
GSMD
이미지는 파일에서 나오고 소리는 스트림에서 나옵니다. 실제로 이미지가 첨부 될 수있는 항목 세트가 있습니다. 이미지를 공유 할 수 없습니다
어떤 방법을 시도 했습니까? 직렬화 가능한 인터페이스를 사용하는 것이 길이라고 생각합니다. 여기에 있습니다 둘 조항 주제에.
원래,
- 클래스에서 직렬화 가능한 인터페이스를 구현하십시오
- 파일에 저장해서는 안되는 멤버 (파일 핸들, 소켓 연결 등과 같은 상황에 맞는 데이터를 포함하는 멤버).
이미지 및 사운드 클래스를 사용하여 데이터를 작성하는 방식을 사용자 정의해야하지만 구현해야합니다.
private void writeObject (ObjectOutputStream out)는 ioException을 던졌습니다.
private void readObject (ObjectInputStream in)는 ioException, classNotFoundException;