Java Tree to represent filesystem (files/dir) from list of paths

前端 未结 5 787
感动是毒
感动是毒 2021-02-04 02:39

I\'ve a list of paths like this

/mnt/sdcard/folder1/a/b/file1
/mnt/sdcard/folder1/a/b/file2
/mnt/sdcard/folder1/a/b/file3
/mnt/sdcard/folder1/a/b/file4
/mnt/sdc         


        
5条回答
  •  忘掉有多难
    2021-02-04 03:26

    I implemented a solution to the challenge myself, it is available as a GitHubGist.

    I am representing each node of a filesystem-hierarchy in a DirectoryNode. A helper-method createDirectoryTree(String[] filesystemList) creates a direcotry-tree.

    Here is the usage example, which is included in the GitHubGist.

    final String[] list = new String[]{
      "/mnt/sdcard/folder1/a/b/file1.file",
      "/mnt/sdcard/folder1/a/b/file2.file",
      "/mnt/sdcard/folder1/a/b/file3.file",
      "/mnt/sdcard/folder1/a/b/file4.file",
      "/mnt/sdcard/folder1/a/b/file5.file",
      "/mnt/sdcard/folder1/e/c/file6.file",
      "/mnt/sdcard/folder2/d/file7.file",
      "/mnt/sdcard/folder2/d/file8.file",
      "/mnt/sdcard/file9.file"
    };
    
    final DirectoryNode directoryRootNode = createDirectoryTree(list);
    
    System.out.println(directoryRootNode);
    

    The System.out.println -output is:

      {value='mnt', children=[{value='sdcard', children=[{value='folder1', 
      children=[{value='a', children=[{value='b', children=[{value='file1.file', 
      children=[]}, {value='file2.file', children=[]}, {value='file3.file', 
      children=[]}, {value='file4.file', children=[]}, {value='file5.file', 
      children=[]}]}]}, {value='e', children=[{value='c', 
      children=[{value='file6.file', children=[]}]}]}]}, 
      {value='folder2', children=[{value='d', children=[{value='file7.file', 
      children=[]}, {value='file8.file', children=[]}]}]}, 
      {value='file9.file', children=[]}]}]}
    

提交回复
热议问题