Файловая система в YAML - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь создать сайт с GatsbyJS, используя файлы уценки.У меня есть каталог с файлами и папками в произвольном порядке.Пример:

1. Folder1
    1.1 Folder2
        1.1.1 file1
    1.2 file2
    1.3 file3

Я хочу написать код для автоматической генерации файла YAML, содержащего эту файловую структуру.

Вот ожидаемый файл YAML

- title: Folder1
  items:
    - title: Folder2
      items:
       - title: file1
         path: /Folder1/Folder2/file1
    - title: file2
      path: /Folder1/file2
    - title: file3
      path: /Folder1/file3

Это ожидаемый результат.Как решить эту проблему?

1 Ответ

0 голосов
/ 18 февраля 2019

Я использовал java-программу для печати всех файлов в "/"

import java.io.File; 
public class FileSystemToYAML  
{ 
     static void absolutePathToFile(File[] arr,int index,int level)  
     { 
         String filename;
         if(index == arr.length) 
             return; 

         if(arr[index].isFile()) 
         {
             for (int i = 0; i < level; i++) 
                 System.out.print("    "); 

             filename = arr[index].getName();
             System.out.println("- title: "+ filename);

             for (int i = 0; i < level; i++) 
                 System.out.print("    "); 

             System.out.println("  path: /"+ filename);
         } 
         else if(arr[index].isDirectory()) 
         { 
             filename = arr[index].getName();
             for (int i = 0; i < level; i++) 
                 System.out.print("    ");
             System.out.println("- title: " + filename); 

             for (int i = 0; i < level; i++) 
                 System.out.print("    ");
             System.out.println("  items: ");
             absolutePathToFile(arr[index].listFiles(), 0, level + 1); 
         } 
         absolutePathToFile(arr,++index, level); 
    } 

    public static void main(String[] args) 
    {    
        String maindirpath = "/"; 
        File maindir = new File(maindirpath); 

        if(maindir.exists() && maindir.isDirectory()) 
        { 
            File arr[] = maindir.listFiles(); 
            absolutePathToFile(arr,0,0);  
       }  
    } 
} 

Файл YAML можно сгенерировать, напечатав вывод в файл вместо консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...