我實現了一個解決方案來挑戰自己,這是available as a GitHubGist。
我代表DirectoryNode中文件系統層次結構的每個節點。輔助方法createDirectoryTree(String [] filesystemList)創建一個direcotry-tree。
以下是使用示例,其中包含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);
的的System.out.println -output是:
{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=[]}]}]}
* 「的源代碼開始?」 *參見[文件瀏覽器的GUI(http://codereview.stackexchange.com /問題/ 4446 /文件瀏覽器的GUI)。 –
**另請參閱:** http://stackoverflow.com/questions/1005551/construct-a-tree-structure-from-list-of-string-paths – dreftymac