如何列出存储在 json 文件中的不同路径的文件夹和文件 - Java
How to list folders and files from different paths stored in a json file - Java
我想列出存储在 json 文件中的不同路径的所有文件夹和文件,以便稍后使用过滤器删除它们。在下面的代码中,我使用 FILE class 列出了文件夹,并且只有一个路径。
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"]
}
]
}
您需要将 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) {}
在您的主要功能中,您现在可以执行此操作。
// 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);
}
我想列出存储在 json 文件中的不同路径的所有文件夹和文件,以便稍后使用过滤器删除它们。在下面的代码中,我使用 FILE class 列出了文件夹,并且只有一个路径。
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"]
}
]
}
您需要将 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) {}
在您的主要功能中,您现在可以执行此操作。
// 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);
}