【问题标题】:How to build a Serializable TreeModel containing files and subdirectories?如何构建包含文件和子目录的可序列化 TreeModel?
【发布时间】:2013-01-29 15:01:05
【问题描述】:

我正在尝试为 Java 应用程序构建 TreeModel。由于我需要对其进行序列化并通过ObjectOutputStream 发送,因此我尝试使用DefaultTreeModel,因为它实现了Serializable 接口。

好的,我想我没问题。

我的问题是:现在,我如何构建一个包含目录的DefaultTreeModel(作为参数传递,我猜是DefaultMutableTreeNode?)及其所有文件和子目录?

我通过JTree 实现了这一点,但它似乎不是可序列化的,所以现在我被卡住了,因为我无法理解文档示例。

【问题讨论】:

    标签: java swing serialization treemodel


    【解决方案1】:

    FileSerializable,实现TreeModelFileTreeModel 很简单,如here 所述。您可以使用如下代码遍历以File f 为根的树:

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

    还要考虑 Bloch 的建议,Item 75,“不先考虑是否合适就不要接受默认的序列化形式。”

    【讨论】:

    • 我不想遍历任何东西,我只需要一个可以通过传递根目录来构建的 TreeModel(如您的 FileTreeModel 示例)和序列化(您的示例似乎没有做) .就如此容易。没有别的了。
    • 然后只需添加implements Serializable 和一个名为serialVersionUIDstatic final long 字段。单个属性root 已经是Serializable
    • 很好!我已经尝试过了,但我遇到了一些奇怪的事情,所以我不确定它是否是我的TreeModel。我坚持使用这个(你的)解决方案,发现这个错误是由于其他原因造成的。所以现在它正在工作,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多