2012-09-29 23 views
1

可以說我正在做一個需要我的.jar文件中的.txt文件的所有行復製程序。它位於包program.files中,它被命名爲text.txt。我一直在尋找互聯網,我找不到我在找什麼。我認爲這個想法:閱讀我的.jar一個文本文件

public String readSpecificFromJar(String dir, int line) { 
    String read = null; 
    try { 
     InputStream in = getClass().getResourceAsStream(dir); 
     BufferedReader bufferedReader = new BufferedReader(
       new InputStreamReader(in)); 

     /** 
     * declare string variable and prime the read 
     */ 
     read = bufferedReader.readLine(); 

     for (int i = 1; i < line; i++) { 
      read = bufferedReader.readLine(); 
     } 

     bufferedReader.close(); 
    } catch (IOException ioexception) { 
     Dialogs.fail("Could not read txt file from the JAR!!! Error Code: 06"); 
    } 

    return read; 
} 

會工作,但我試過,它給了我各種各樣的錯誤。我認爲這個問題會是如何聲明InputStream in它希望文件在Main方法中正確的方式。我將如何改變這一點,所以情況並非如此?提前致謝!

編輯: 由於有些混亂,我想清除這個了。字符串dir我正在輸入files/text.txt。它不會工作。我該如何解決?

編輯2: 好吧,我覺得問題沒有得到解決,我有點加重,主要是因爲我很累。爲不同的程序工作的代碼是上面,其中dir只是"text.txt"

這不適用於我正在做什麼,我不知道爲什麼。再次,該文件是在CLASSPATH所以dir只是"text.txt"。我想要我的.txt文件爲"files/text.txt"。我該怎麼做呢?

編輯3: 我不知道如果我提到這個問題,但我的.txt文件是在我的罐子。只是爲了澄清混亂。所以真的,.jar文件的路徑應該不重要,因爲我不應該在dir中輸入它。同時,主類是在包main和.txt文件是在包files所有命名copy在同一程序中。另外,我試圖將txt文件移動到與main類相同的包,也沒有工作。

編輯4: 順便說一句,包含從罐子裏讀取的方法是IO。如類io在包IO內。我的所有文件,如圖像和TXT在包files。只是認爲id清楚起來。我嘗試將txt文件移動到io類的包中,並且該類可以工作,但是如果它在任何其他包中,即使我在dir中包含包名,也不會起作用。任何想法爲什麼?

+0

.txt文件必須在CLASSPATH中。你的JAR文件是否有清單?這應該。將.txt文件的路徑添加到CLASSPATH中,它應該可以正常工作。 – duffymo

+0

更好地添加text.txt的字符編碼,例如'new InputStreamReader(in,「Windows-1252」)'。所以在其他操作系統和國家,一切順利。 'readLine()'在文件結束時爲空,否則行_without_行結束。所以'read + = br.readLine()+「\ n」;'左右。 –

+0

嘗試傳遞「程序/文件/ text.txt」作爲「目錄」,因爲這是包名 –

回答

1

.txt文件應 dir根目錄是您的類文件位於同一目錄


編輯:由於有些混亂,我想明白這一點。爲字符串 目錄我正在輸入files/text.txt。它不會工作。我該如何解決?

是什麼類的路徑?(包含readSpecificFromJar()類)如果.class文件和.txt文件都在同一個目錄,那麼你應該讓這樣的:

dir = "text.txt"; 

編輯4:順便說一下,包含從 中讀取的方法的包是IO。就像io中的類在IO包中一樣。我的所有 文件(如圖像和txt)都在軟件包文件中。只是想到了ID 明白了。我嘗試將txt文件移動到io 類的包中,並且該類可以工作,但是如果它在任何其他包中,即使我在dir中包含包名,它也不會起作用。任何想法爲什麼?

試試這個:

dir = "../files/text.txt"; 

我相信,如果你的結構如下這會工作:

javaApp.jar 
     | 
    _____|_____ 
    |   | 
files   IO 
    |   | 
    |   | 
text.txt io.class 
+0

請參閱編輯...即編輯3 – PulsePanda

+0

所以我看到你的新編輯,所以我回復編輯4 – PulsePanda

+0

@wbAnon看到我的回答的最後一部分:) –