我正在尝试为Java应用程序构建一个TreeModel
。由于我需要序列化它并通过ObjectOutputStream
发送它,所以我尝试使用DefaultTreeModel
,因为它实现了Serializable
接口。
好吧,我想我可以接受。
我的问题是:现在,我如何构建一个包含目录(作为参数传递,我想是DefaultMutableTreeNode
?)及其所有文件和子目录的DefaultTreeModel
?
我用JTree
实现了这一点,但它似乎不可序列化,所以现在我被卡住了,因为我无法理解文档示例。
File
是Serializable
,实现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);
}
}
还可以考虑Bloch的建议,第75项,"在没有首先考虑是否合适的情况下,不要接受默认的序列化形式。"