2017-08-18 7 views
0

Ich habe ein Problem mit einem relativen Pfad zu einem Image-Ordner. Ich möchte die Bilder in einen Ordner auflisten, um ihre URLs zu einer Liste hinzuzufügen und sie in einem JSP anzuzeigen. Der Code ist dies:Relativer Pfad zum Image-Ordner Java-Quelle

File carpetaImagenes = new File("../../../../../webapp/resources/img/maquinas/"+seleccion); 
    List<String> listaUrlImagenes = new ArrayList<String>(); 

    /** Recorremos el directorio de imagenes de la maquina */ 
    for(File imagen : carpetaImagenes.listFiles()){ 
     String imageFileName = imagen.getName();   
     listaUrlImagenes.add(imageFileName); 
    } 

Das Ergebnis der "carpetaImagenes.listFiles()" ist immer null. Ich nehme an, der Weg ist schlecht. Hier sehen Sie das Bild des Ordnerbaums. Die Klasse ist in "controlador" Ordner und die Bilder sind in "webbapp/resources/img/maquinas/1"

Ich habe mehrere Wege ohne Glück versucht. Vielen Dank.

Antwort

0

Benutzer Methode getImageList folgenden, und es sollte ein relativer Pfad von Classpath

relativeFilePath = "img/maquinas/"+seleccion; 

Dies ist arbeiten. Ich nehme an, dass ../../../../../webapp/resources Ihr tatsächlicher Ordner ist, in dem everything bereitgestellt wird.

private List getImageList(String relativeFilePath) { 
List<String> listaUrlImagenes = new ArrayList<String>(); 
try { 

    InputStream in = getResourceAsStream(relativeFilePath); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    String resource; 

    while ((resource = br.readLine()) != null) { 
     listaUrlImagenes.add(resource); 
    } 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
return listaUrlImagenes; 
} 
private InputStream getResourceAsStream(String resource) { 
final InputStream in = ClassLoader cl = this.getClass().getClassLoader().getResourceAsStream(
     resource); 

return in == null ? getClass().getResourceAsStream(resource) : in; 
} 

Und in Frühjahr arbeiten folgende sollte.

ClassLoader cl = this.getClass().getClassLoader(); 
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(
     cl); 
Resource[] resources = resolver.getResources("classpath:/img/maquinas/"+seleccion);// or *.png 
for (Resource resource : resources) { 

listaUrlImagenes.add(resource.getFilename()); 
} 
+0

Ich habe den Frühling Weg versucht und es funktioniert nicht. Bilder sind in src/webapp/resources/img/maquinas/1 – Pedro

+0

was ist mit der anderen Option? – surya

+0

Funktioniert nicht. Nullzeiger beim Methodenaufruf Ich denke, der relative Pfad ist falsch – Pedro

0

Endlich funktioniert !!

File carpetaImagenes = new ClassPathResource("imagenes/maquinas/"+seleccion).getFile(); 
    File[] listaImagenes = carpetaImagenes.listFiles();