如何列出 json 文件中存储的不同路径的文件夹和文件 - Java

发布于 2025-01-09 14:34:42 字数 1132 浏览 0 评论 0原文

我想列出存储在 json 文件中的不同路径的所有文件夹和文件,以便稍后使用过滤器删除它们。在下面的代码中,我使用 FILE 类列出了文件夹,并且仅列出了一个路径。

public class Depurador {
   public static void main(String[] args) {
   File ruta = new File("C:\\Users\\erick\\Desktop\\prueba");
   ImprimirFicheros1(ruta, 0);
}

public static void ImprimirFicheros1(File file, int nivelArbol){
   for(int i = 0; i < nivelArbol; i++){
       System.out.print("-");
   }
   System.out.println(file.getName());
   
   if(file.isDirectory()){
       File[] listaFicheros = file.listFiles();
       for(File fichero : listaFicheros){
           ImprimirFicheros1(fichero, nivelArbol + 2);
       }
   }
}

我想列出此 json 文件中的所有文件夹和文件,而不仅仅是一个路径中的文件夹和文件。

{
    "Directorios":[
        {
            "ruta": "C:\\Users\\erick\\Desktop\\prueba",
            "periodo": 15,
            "archivos":["yyyy-mm-dd_reportesdetalles_1.csv, yyyy-mm-dd_reportesdetalles_2.csv"]
        },
        {
            "ruta": "C:\\Users\\erick\\Desktop\\test",
            "periodo": 20,
            "archivos":["yyyy-mm-dd_test_1.csv, yyyy-mm-dd_test_2.csv"]
        }
    ]
}

I want to list all the folders and files from different paths stored in a json file in order to delete them later with a filter. In the folowing code I list the folders using the FILE class and only one path.

public class Depurador {
   public static void main(String[] args) {
   File ruta = new File("C:\\Users\\erick\\Desktop\\prueba");
   ImprimirFicheros1(ruta, 0);
}

public static void ImprimirFicheros1(File file, int nivelArbol){
   for(int i = 0; i < nivelArbol; i++){
       System.out.print("-");
   }
   System.out.println(file.getName());
   
   if(file.isDirectory()){
       File[] listaFicheros = file.listFiles();
       for(File fichero : listaFicheros){
           ImprimirFicheros1(fichero, nivelArbol + 2);
       }
   }
}

I would like to list all the folders and files from this json file and not only from one path.

{
    "Directorios":[
        {
            "ruta": "C:\\Users\\erick\\Desktop\\prueba",
            "periodo": 15,
            "archivos":["yyyy-mm-dd_reportesdetalles_1.csv, yyyy-mm-dd_reportesdetalles_2.csv"]
        },
        {
            "ruta": "C:\\Users\\erick\\Desktop\\test",
            "periodo": 20,
            "archivos":["yyyy-mm-dd_test_1.csv, yyyy-mm-dd_test_2.csv"]
        }
    ]
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三岁铭 2025-01-16 14:34:42

您需要将 JSON 字符串反序列化为对象。您可以使用像 jackson ObjectMapper 这样的库

class Directory {

   private String ruta;
   private int periodo;
   private List<String> archivos;

   // getters and setters
}

或使用记录 (java 14+)

public record Directory(String ruta, int periodo, List<String> archivos) {}

public record Input(List<Directory> Directorios) {}

在您的 main 函数中您现在可以执行此操作。

// triple quote text block is java 13+
String jsonString = """
{
    "Directorios":[
        {
            "ruta": "C:\\Users\\erick\\Desktop\\prueba",
            "periodo": 15,
            "archivos":["yyyy-mm-dd_reportesdetalles_1.csv, yyyy-mm-dd_reportesdetalles_2.csv"]
        },
        {
            "ruta": "C:\\Users\\erick\\Desktop\\test",
            "periodo": 20,
            "archivos":["yyyy-mm-dd_test_1.csv, yyyy-mm-dd_test_2.csv"]
        }
    ]
}
""";
List<Directory> directories = new com.fasterxml.jackson.databind.ObjectMapper().readValue(jsonString, Input.class).getDirectorios();

for (Directory d : directories) {
   File ruta = new File(d.getRuta());
   ImprimirFicheros1(ruta, 0);
}

You will need to deserialize the JSON string into object. You can use a library like jackson ObjectMapper

class Directory {

   private String ruta;
   private int periodo;
   private List<String> archivos;

   // getters and setters
}

or use a record (java 14+)

public record Directory(String ruta, int periodo, List<String> archivos) {}

public record Input(List<Directory> Directorios) {}

In your main function you can do this now.

// triple quote text block is java 13+
String jsonString = """
{
    "Directorios":[
        {
            "ruta": "C:\\Users\\erick\\Desktop\\prueba",
            "periodo": 15,
            "archivos":["yyyy-mm-dd_reportesdetalles_1.csv, yyyy-mm-dd_reportesdetalles_2.csv"]
        },
        {
            "ruta": "C:\\Users\\erick\\Desktop\\test",
            "periodo": 20,
            "archivos":["yyyy-mm-dd_test_1.csv, yyyy-mm-dd_test_2.csv"]
        }
    ]
}
""";
List<Directory> directories = new com.fasterxml.jackson.databind.ObjectMapper().readValue(jsonString, Input.class).getDirectorios();

for (Directory d : directories) {
   File ruta = new File(d.getRuta());
   ImprimirFicheros1(ruta, 0);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文