2013-02-13 1 views
1

Java 응용 프로그램 용으로 TreeModel을 만들려고합니다. 그것을 serialize하고 ObjectOutputStream을 통해 보내야하므로 Serializable 인터페이스를 구현하기 때문에 DefaultTreeModel을 사용하려고합니다.파일 및 하위 디렉토리가 포함 된 Serializable TreeModel을 작성하는 방법은 무엇입니까?

좋아, 나는 괜찮다고 생각한다. (?를 DefaultMutableTreeNode는 것 같아요, 인수로 전달) 및 모든 파일 및 서브 디렉토리, 어떻게 디렉토리를 포함하는 DefaultTreeModel 구축 할 수 있습니다 지금 :

내 질문입니까?

JTree으로 달성했지만 직렬화 할 수없는 것처럼 보입니다. 이제는 의사 예제를 이해할 수 없어서 고생했습니다.

답변

2

FileSerializable이며, here 언급 한 바와 같이 TreeModel가 간단 구현 FileTreeModel. 이 같은 코드를 사용하여 File f에 뿌리를 둔 나무 통과 할 수 있습니다. "처음이 적절한 지 여부를 고려하지 않고 기본 직렬화 된 형식에 동의하지 않는다"

private void ls(File f) { 
    File[] list = f.listFiles(); 
    for (File file : list) { 
     if (file.isDirectory()) ls(file); 
     else handle(file); 
    } 
} 

는 또한 블로흐의 제안, Item 75을 고려를

+0

나는 아무것도 트래버스하고 싶지 않다. TreeModel (예 : FileTreeModel 예제)이 루트 디렉토리를 전달하여 빌드 할 수 있어야하고 Serialize (예를 들어 보이지 않는 것)가 필요하다. 저것과 같이 쉬운. 다른 건 없어. – thibaultcha

+0

그런 다음'serializable'을 구현하고'serialVersionUID'라는 이름의'static final long' 필드를 추가하십시오. 단일 속성 인'root'는 이미'Serializable'입니다. – trashgod

+0

좋아요! 나는 이미 그것을 시도했지만 나는 그것이 이상한 무언가에 직면하고 있었기 때문에 그것이 내 TreeModel인지 확실하지 않았다. 나는이 (너의 것) 해결책으로 인내하고 버그가 다른 것으로 인해 발견했다. 그래서 지금 일하고있어, 고마워! – thibaultcha