簡體   English   中英

如何將文件夾列表和子文件夾列表轉換為 JSOn 格式

[英]How to Convert List of Folders and SubFolder into JSOn FOrmat

我想在 KendoDrop Down 上用子文件夾名稱填充文件夾名稱。 所以我想以 JSOn 格式轉換文件夾目錄我該怎么做?

public class FolderPath {

    public static void main(String[] args) throws IOException {
        File currentDir = new File("Folder URL "); // current directory
        displayDirectoryContents(currentDir);

    }
    public static void displayDirectoryContents(File dir) {

        StringBuilder sb1 = new StringBuilder("[");
        try {

            File[] files = dir.listFiles();

            for (File file : files) {
                if (file.isDirectory()) {
                    sb1 = sb1.append("{\"JSONKEY\":\"" + file.getCanonicalPath() + "\"},");
                    String str = file.getCanonicalPath();
                    displayDirectoryContents(file);

                } else {
                }

            }
            sb1.deleteCharAt(sb1.length() - 1);
            sb1 = sb1.append("]");
            System.out.println("s2==>" + sb1);

        } catch (IOException e) {
            e.printStackTrace();
        }   
    }
}

在這里,我沒有將完整的 Directroy 導入 JSOn 請幫助

您在每次迭代中創建一個StringBuilder對象。 這就是為什么您的串聯不起作用的原因。

考慮你C:\\test內容由 3 個目錄組成:

c:\test
  |
  +--css
  |   +--less
  +--js

下面的代碼,返回:

 [{"JSONKEY":"C:\test\css"},
  {"JSONKEY":"C:\test\css\less"},
  {"JSONKEY":"C:\test\js"}]


import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class FolderPath {

    private static FileFilter onlyDirectories = new FileFilter() {
        @Override
        public boolean accept(File file) {
            return file.isDirectory();
        }
    };

    public static void main(String[] args) {
        File currentDir = new File("C:\\test"); // current directory
        displayDirectoryContents(currentDir);
    }

    public static void displayDirectoryContents(File dir) {
        StringBuilder sb1 = new StringBuilder("[");
        doDisplayDirectoryContents(dir, sb1);
        if (sb1.length() > 1) {
            sb1.deleteCharAt(sb1.length() - 1);
        }
        sb1.append("]");
        System.out.println(sb1);
    }

    private static void doDisplayDirectoryContents(File dir, StringBuilder sb1) {
        File[] files = dir.listFiles(onlyDirectories);

        if (files != null) {
            for (File file : files) {
                try {
                    sb1.append("{\"JSONKEY\":\"" + file.getCanonicalPath() + "\"},");
                    doDisplayDirectoryContents(file, sb1);
                } catch (IOException e) {
                    e.printStackTrace();
                }   
            }
        }
    }
}
public List<Object> getDirectoryContents(String path) throws IOException {
    File directory = new File(path);
    File[] files;
enter code here    FileFilter fileFilter = file -> file.isDirectory() || file.isFile();
    files = directory.listFiles(fileFilter);
    List<Object> directoryContent = new ArrayList<>();
    if(files != null) {
        for (int i = 0; i < files.length; i++) {
            File filename = files[i];
            String folderPath[] =filename.toString().split("/");
            if(files[i].isDirectory()) {
                Folder folder = new Folder();
                folder.setName(folderPath[folderPath.length - 1]);
                folder.setType("folder");
                folder.setChildren(mapper.readTree(mapper.writeValueAsString(getDirectoryContents(path + "/" + folder.getName()))));
                directoryContent.add(folder);
            }
            else{
                Files file = new Files();
                file.setName(folderPath[folderPath.length - 1]);
                file.setType("file");
                directoryContent.add(file);
            }
        }
    }
    return directoryContent;
}

公共類文件{

private String name;
private String type = "file";

}

公共類文件夾{

private String name;
private String type = "folder";
private JsonNode children;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM