2011-12-06 46 views
0

我試圖從我的webapp的src/main/resources目錄中的文件夾中獲取文件列表。有沒有人有辦法解決嗎 ? 所以,一個問題是,我的classpath中只有glassfish.jar。 我從哪裏可以找到入口點。 這是一個maven項目。來自src/main/resources/somefolder的JSF應用程序列表文件

問候, 霍爾格

+0

不完全知道你在這裏後,在做什麼。你想以編程方式做這個還是隻是一次性的。如果是後者,那麼你可以用pkzip(例如)打開你的war文件並導航到它。 – DaveRlz

+0

我試圖以編程方式獲取文件名數組。 Like String [] files = getFilesFromResourcePath(「targetDirectory」); 而這些文件位於/ src/main/resources/targetDirectory中 – ITR

+0

爲什麼你要這麼做?除非你正在編寫單元測試,否則這沒有太大意義。資源下的文件將進入war文件的根目錄。因此,如果您的應用程序部署完成後,getFilesList(「/ src/main/resources/targetDirectory」)將不起作用。 – Federico

回答

0

到目前爲止解決辦法: 其工作,但不能滿足我,因爲絕對路徑。

org.apache.commons.io.FileUtils必須包括在內。

public Collection<File> queryResourceFileCollectionByDirectoryMember(Class clazz, String resourcePathToMember, String[] extensions) { 
    logger.info("------- FileTools : queryResourceFileCollectionByDirectoryMember"); 

    try { 
     //String[] extensions = {"xml"}; 
     URL resourceURL = clazz.getResource(resourcePathToMember);//"/fields/testOITM.xml" <- one XML file in the /src/main/resources/fields/ folder to get the absolutepath which after deployment is WEB-INF/classes/fields 
     String resourcePath = resourceURL.getPath(); 

     //Remove the leading slash 
     String resourcePathWithoutFirstChar = resourcePath.substring(1); 
     logger.log(Level.INFO, "------- FileTools : queryResourceFileCollectionByDirectoryMember: resourcePath :{0} :", resourcePathWithoutFirstChar); 
     File resourceFileToGetDirectory = new File(resourcePathWithoutFirstChar); 
     String resourceDirectoryPath = resourceFileToGetDirectory.getParent() + File.separator; //"c:/Users/xuser/Documents/NetBeansProjects/BOneBApp/target/classes/" 
     File resourceDirectory = new File(resourceDirectoryPath); 
     Collection<File> files = FileUtils.listFiles(resourceDirectory, extensions, true); 
     return files; 
    } catch (Exception e) { 
     logger.log(Level.SEVERE, "******* FileTools : queryResourceFileCollectionByDirectoryMember : {0}", e.getMessage()); 
     return null; 
    } 
} 

clazz可以是任何類的webapp。

問候, 霍爾格

+0

如果該類位於未展開的WAR/JAR中,則這不起作用。 – BalusC

+0

這是正確的,但在這種情況下,應用程序的要求是,戰爭爆炸。未爆炸戰爭的正確代碼是什麼? – ITR

相關問題