第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從jar中讀取資源文件

從jar中讀取資源文件

從jar中讀取資源文件我想從我的jar中讀取資源,如下所示:File file;file = new File(getClass().getResource("/file.txt").toURI());BufferredReader reader = new BufferedReader(new FileReader(file)); //Read the file并且它在Eclipse中運(yùn)行時(shí)工作正常,但是如果我將它導(dǎo)出到j(luò)ar中運(yùn)行它就會(huì)出現(xiàn)IllegalArgumentException:Exception in thread "Thread-2"java.lang.IllegalArgumentException: URI is not hierarchical而且我真的不知道為什么,但經(jīng)過一些測試我發(fā)現(xiàn)如果我改變了file = new File(getClass().getResource("/file.txt").toURI());至file = new File(getClass().getResource("/folder/file.txt").toURI());然后它的工作正好相反(它適用于jar而不是eclipse)。我正在使用Eclipse,我的文件夾在一個(gè)類文件夾中。
查看完整描述

4 回答

?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

而不是嘗試將資源作為文件來處理,而只是要求ClassLoader通過getResourceAsStream返回資源的InputStream

InputStream in = getClass().getResourceAsStream("/file.txt"); BufferedReader reader = new BufferedReader(new InputStreamReader(in));

只要file.txt資源在類路徑上可用,那么無論file.txt資源是在classes/目錄中還是在內(nèi)部,這種方法都將以相同的方式工作jar

之所以URI is not hierarchical發(fā)生這種情況,是因?yàn)閖ar文件中資源的URI看起來像這樣:file:/example.jar!/file.txt。您無法讀取jarzip文件)中的條目,就像它是一個(gè)普通的舊文件

這可以通過以下答案得到很好的解釋:


查看完整回答
反對 回復(fù) 2019-05-29
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

要訪問jar中的文件,您有兩個(gè)選擇:

  • 將文件放在與包名匹配的目錄結(jié)構(gòu)中(在解壓縮.jar文件后,它應(yīng)該與.class文件位于同一目錄中),然后使用 getClass().getResourceAsStream("file.txt")

  • 將文件放在根目錄下(在解壓縮.jar文件后,它應(yīng)該在根目錄中),然后使用它來訪問它 Thread.currentThread().getContextClassLoader().getResourceAsStream("file.txt")

當(dāng)jar用作插件時(shí),第一個(gè)選項(xiàng)可能不起作用。


查看完整回答
反對 回復(fù) 2019-05-29
?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果你想讀作文件,我相信仍有類似的解決方案:

    ClassLoader classLoader = getClass().getClassLoader();
    File file = new File(classLoader.getResource("file/test.xml").getFile());


查看完整回答
反對 回復(fù) 2019-05-29
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

之前我遇到過這個(gè)問題,我做了后備加載方式。基本上第一種方式在.jar文件中工作,第二種方式在eclipse或其他IDE中工作。

public class MyClass {
    public static InputStream accessFile() {
        String resource = "my-file-located-in-resources.txt";
        // this is the path within the jar file
        InputStream input = MyClass.class.getResourceAsStream("/resources/" + resource);
        if (input == null) {
            // this is how we load file within editor (eg eclipse)
            input = MyClass.class.getClassLoader().getResourceAsStream(resource);
        }
        return input;
    }}


查看完整回答
反對 回復(fù) 2019-05-29
  • 4 回答
  • 0 關(guān)注
  • 1532 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號