生成指定文件目录下的文件树

xiaoxiao2021-02-28  91

用FileSystemView fileSystemView = FileSystemView.getFileSystemView()初始化的树默认以desktop为根目录,但是如果不使用FileSystemView来初始化,自定义的FileNode将不能用实际文件来定义,即不能与文件联系起来,可以采用listFile(),和FileSystemView相结合的方法,同时在FiletTreeModel中 自定义FileNode的isLeaf()函数来实现

class FileTreeModel extends DefaultTreeModel {     public FileTreeModel(TreeNode root) {         super(root);          FileSystemView fileSystemView = FileSystemView.getFileSystemView();             File[] files=fileSystemView.getRoots();         for (int i = 0; i < files.length; i++) {             FileNode childFileNode = new FileNode(fileSystemView.getSystemDisplayName(files[i]), fileSystemView.getSystemIcon(files[i]), files[i], false);             DefaultMutableTreeNode childTreeNode = new DefaultMutableTreeNode(childFileNode);             ((DefaultMutableTreeNode)root).add(childTreeNode);         }     }     @Override     public boolean isLeaf(Object node) {         DefaultMutableTreeNode treeNode=(DefaultMutableTreeNode)node;         FileNode fileNode=(FileNode)treeNode.getUserObject();         if(fileNode.isDummyRoot)return false;         return fileNode.file.isFile();     } }

初始化

  DefaultMutableTreeNode lastTreeNode =(DefaultMutableTreeNode) event.getPath().getLastPathComponent();                 FileNode fileNode = (FileNode) lastTreeNode.getUserObject();                                  File[] files;                 File f = new File("C:/Users/Dadaism/Desktop/123/");                                  if (!fileNode.isInit) {                          if (fileNode.isDummyRoot) {                        files = f.listFiles();                      }                      else {                     FileSystemView fs = FileSystemView.getFileSystemView();                        files = fs.getFiles(                        ((FileNode) lastTreeNode.getUserObject()).file,                        false);                     }                     for (int i = 0; i < files.length; i++) {                         FileNode childFileNode;                         DefaultMutableTreeNode childTreeNode;                                                  if(files[i].getName().endsWith(".txt")){                             String filename = files[i].getName().replace(".txt", "");                             childFileNode = new FileNode(filename,null,files[i], false);                         }                         else{                             childFileNode = new FileNode(files[i].getName(),null,files[i],false);                         }                         childTreeNode = new DefaultMutableTreeNode(childFileNode);                         lastTreeNode.add(childTreeNode);                     }                     DefaultTreeModel treeModel1 = (DefaultTreeModel) getModel();                     treeModel1.nodeStructureChanged(lastTreeNode);                 }               fileNode.isInit = true;                     

转载请注明原文地址: https://www.6miu.com/read-62936.html

最新回复(0)