1

.jar ファイル内の .txt ファイル内のすべての行をコピーする必要があるプログラムを作成しているとしましょう。これはパッケージに含まれており、program.filestext.txt という名前が付けられています。私はインターネットをあちこち探し回っていますが、探しているものが見つかりません。私はこの考えだと思います:

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: OK、問題が伝わっていないように感じます。主にかなり疲れているため、少し悪化しています。別のプログラムで動作するコードは上にありdirます。"text.txt"

これは私がやっていることには当てはまりません。理由はわかりません。繰り返しますが、ファイルは CLASSPATH にあるためdir"text.txt". .txt ファイルを .txt ファイルにしたい"files/text.txt"。どうすればいいですか?

編集 3: 言及したかどうかはわかりませんが、私の .txt ファイルは私の瓶の中にあります。混乱を解消するだけです。実際には、.jar ファイルのパスは重要ではありませんdir。また、メイン クラスはパッケージ内mainにあり、.txt ファイルはfilesすべて、.txt という名前の同じプログラム内のパッケージ内にありますcopy。また、txtファイルをmainクラスと同じパッケージに移動しようとしましたが、うまくいきませんでした。

編集 4: ちなみに、jar から読み取るためのメソッドを保持するパッケージはIO. クラスのようにio、パッケージ内にありますIO。画像やtxtなどのファイルはすべてパッケージに含まれていますfiles。idがそれを明確にしていると思いました。txtファイルをioクラスのパッケージに移動しようとしましたが、それは機能しましたが、他のパッケージにある場合は、パッケージ名を含めても機能しませんdir。理由についてのアイデアはありますか?

4

1 に答える 1

1

.txtファイルはにある必要があります。のルートディレクトリdir、クラスファイルが置かれているのと同じディレクトリです。


編集:いくつかの混乱のため、私はこれを片付けたいと思います。文字列ディレクトリの場合、files/text.txtと入力します。それは動作しません。これを修正するにはどうすればよいですか?

クラスのパスは何ですか?(readSpecificFromJar()を含むクラス).classファイルと.txtファイルが両方とも同じディレクトリにある場合は、次のようにする必要があります。

dir = "text.txt";

編集4:ちなみに、jarから読み取るためのメソッドを保持するパッケージはIOです。クラスioのように、パッケージIO内にあります。画像やtxtなどの私のファイルはすべてパッケージファイルに含まれています。idがそれを明確にしたと思っただけです。txtファイルをioクラスのパッケージに移動しようとしましたが、それは機能しましたが、他のパッケージにある場合は、ディレクトリにパッケージ名を含めても機能しません。理由について何かアイデアはありますか?

これを試して:

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

あなたの構造が次のようであれば、これはうまくいくと思います:

   javaApp.jar
        |
   _____|_____
  |           |
files         IO
  |           |
  |           |
text.txt   io.class
于 2012-09-29T23:09:39.347 に答える