我想列出存盤在 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"]
}
]
}
uj5u.com熱心網友回復:
您需要將 JSON 字串反序列化為物件。你可以使用像杰克遜這樣的圖書館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);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/434225.html
下一篇:Version 28 (intended for Android Pie and below) is the last version of the legacy support library
