簡體   English   中英

將一個文件夾中的所有文件保存到jar中

[英]Save all files from a folder in a jar

第一:

我知道,這個問題已經被問了100次了。 我知道,已經有人可以給出正確的答案。

但是無論如何,我不得不再問一次。 我沒有找到適合我的解決方案。 抱歉。

我正在用Java編寫游戲。 當然,我有很多帶有聲音和圖片等的包(文件夾)。 但是這些文件夾的大小各不相同。 因此,我想將此類文件夾的內容動態保存在列表中。

通常,我是這樣做的:

File f[] = new File(getClass.getResource("/home/res/").toURI()).listFiles();

現在,我可以遍歷此文件對象並保存每個文件。 完善。 真?

否。當我將此項目提取到jar存檔中時,這將失敗。 都是因為uri不是“分層的”或類似的東西。 看到此異常:

C:\Users\Administrator\Desktop>java -jar Homework.jar
java.lang.IllegalArgumentException: URI is not hierarchical
        at java.io.File.<init>(Unknown Source)
        at homework.moonface.src.Moonface.loadSounds(Moonface.java:94)
        at homework.moonface.src.Moonface.<init>(Moonface.java:55)
        at control.Overview.main(Overview.java:16)

好的,我想,所以我需要獲取此路徑並將其手動添加到文件對象中。 (新File(“ path”);但是...這不起作用。我收到一個已知錯誤,即輸入未正確編寫,或者當我嘗試從資源URL中剪切“ file:”時,它會中斷,因為在jar中是其“ jar:file:”而不是“ file:”。但是,如果我剪切了jar:file:我將得到null。

因此,請勿將其標記為重復項,並嘗試在不久后為我解釋。 這將幫助成千上萬的其他人,他們不了解其他解決方案。

嘗試這個 :

    URL jarResourceURL = getClass().getResource("/home/res/");
    JarURLConnection jarURLConnection = (JarURLConnection) jarResourceURL.openConnection();
    Enumeration<JarEntry> entries = jarURLConnection.getJarFile().entries();
    while (entries.hasMoreElements()){
        entries.nextElement(); // iterate over entries and do something
    }

UPD:我在考慮spring框架的ClassPathXmlApplicationContext如何解析jars中的資源。 因此,我調查了源代碼,發現存在一個實用程序類org.springframework.core.io.ClassPathResource ,該類具有方便的接口(此外,還可以使用它來獲取相應的java.io.File實例),並且可以提供幫助您解決問題。 這是文檔: http : //docs.spring.io/spring/docs/2.5.x/api/org/springframework/core/io/ClassPathResource.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM