2013-02-13 1 views
1

Я пытаюсь построить TreeModel для приложения Java. Так как мне нужно сериализовать его и отправить его через ObjectOutputStream, я пытаюсь использовать DefaultTreeModel, потому что он реализует интерфейс Serializable.Как создать Serializable TreeModel, содержащий файлы и подкаталоги?

Хорошо, я думаю, что я в порядке.

Мой вопрос: Теперь, как я могу построить DefaultTreeModel содержащий каталог (который передается в качестве аргумента, DefaultMutableTreeNode я думаю?) И все его файлы и подкаталоги?

Я достиг этого с JTree, но, похоже, это не Serializable, поэтому теперь я застрял, потому что я не могу понять примеры документов.

ответ

2

File является Serializable и FileTreeModel, который реализует TreeModel прост, как уже упоминалось here. Вы можете пройти дерево с корнем в 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

Затем просто добавьте 'implements Serializable' и поле' static final long' с именем 'serialVersionUID'. Единственный атрибут 'root', уже« Serializable ». – trashgod

+0

Отлично! Я пробовал это уже, но у меня было что-то странное, поэтому я не был уверен, что это был мой «TreeModel» или нет. Я упорствовал в этом (твоем) решении и обнаружил, что ошибка была вызвана чем-то другим. Так что теперь он работает, спасибо! – thibaultcha

 Смежные вопросы

  • Нет связанных вопросов^_^