2017-08-18 74 views
0

我有一個圖像文件夾的相對路徑有問題。 我想列出圖像到一個文件夾中,將它們的網址添加到列表中,並在jsp中顯示它們。 的代碼是這樣的:圖像文件夾java的相對路徑spring

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); 
    } 

的結果 「carpetaImagenes.listFiles()」 總是空。我想這條路很糟糕。 在這裏你可以看到文件夾樹的圖像。類是爲「controlador」文件夾和圖像都成「webbapp /資源/ IMG/MAQUINAS/1」 enter image description here

我haeve試過,沒有運氣幾條路徑。 非常感謝。

回答

0

用戶以下方法getImageList,它應該工作

relativeFilePath = "img/maquinas/"+seleccion; 

這是來自類路徑的相對路徑。我認爲../../../../../webapp/resources是你實際部署everyathing的文件夾。

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; 
} 

而且在春季以下應該工作。

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

我試過春天的方式,它不起作用。圖像進入src/webapp/resources/img/maquinas/1 – Pedro

+0

其他選項呢? – surya

+0

不起作用。方法調用時爲空指針。我認爲相對路徑是錯誤的 – Pedro

0

終於工作了!!

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