Получить DefaultMutableTreeNode, связанный с Treepath (точный, а не временный) - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь создать программу FTP с графическим интерфейсом, используя Java! И я успешно разработал рекурсивный алгоритм для получения всех файлов. Пример структуры файла. (каждый из файлов и папок является MutableTreeNodes)

~
-- Documnets
    -- file1.txt
    -- file2.txt
-- Pictures
    -- hi
       -- file3.txt
    -- file.txt

У меня есть объект TreePath, и у меня есть fileName. У меня также есть весь MutableTreeNode, связанный со всей директорией "~" (в данном случае). Мне нужно найти точный объект (который связан с TreePath). Любая помощь будет оценена ..

Пример TreePath [~,Documents]

public static DefaultMutableTreeNode getFileStructure(FTPClient client,String workingPath,DefaultMutableTreeNode style )
{

try {

    FTPFile[] files = client.listFiles(workingPath);
    for (FTPFile file : files) {
        if (file.isDirectory())
        {
            DefaultMutableTreeNode fileDirectory =new DefaultMutableTreeNode(file.getName());
           // System.out.println("\n Folder: " +file.toString());
            style.add(fileDirectory);

        //     System.out.println("Node Depth = " + style.getDepth());
            getFileStructure(client, workingPath + "/" + file.getName(),style);
        } else {


        DefaultMutableTreeNode root =new DefaultMutableTreeNode();  

        System.out.println("");
        System.out.println("Working Path: " + workingPath);
        System.out.println("Filename: " + file.getName());

        /// Convert variable (workingPath) to TreePath

        /// Add node to TreePath

        MutableTreeNode node = buildNodeFromString(workingPath);
        MutableTreeNode lastLeaf = node.getLastLeaf();
        TreePath path = new TreePath(lastLeaf.getPath());
        System.out.println("Path =" + path);

        DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode)path.getLastPathComponent();





       // style.remove(parentNode);

        MutableTreeNode fileDirectory =new MutableTreeNode(file.getName());
        // parentNode.add(fileDirectory);
        DefaultTreeModel model = (DefaultTreeModel) jt.getModel();
        model.insertNodeInto(fileDirectory,parentNode,parentNode.getChildCount());
       // model.reload(parentNode);

        style.add(parentNode);

        model.reload(style);

        System.out.println("Added to node = " + parentNode.toString());
       // System.out.println("First Node = " + i.getFirstChild().toString());
        //System.out.println("Last Node = " + i.getLastChild().toString());
        System.out.println("Num of Children = " + parentNode.getLeafCount());
        System.out.println("Depth Count= " + style.getDepth());

        //    return i;
        }
    }
} catch (IOException ex) {
    System.out.println("IOException:" + ex);
 } 



 return style;
}

Часть else содержит код, который я пытаюсь заставить работать. Эта часть отвечает за 1) поиск узла (папки) и создание DefaultMutableTreeNode для этой папки и добавление файлового узла в этот узел папки ...

1 Ответ

0 голосов
/ 10 января 2019

Оказывается, мой цикл "for" был не на месте ....

...