0

私はnetbeansを使用しています。リソースファイル(静的情報を含むtxtファイルなど)にアクセスするときに、プロジェクトを構造化する方法がわかりません。

これは簡単な例です。myfile.txtというtxtファイル内を読み取るTest.javaというファイルがあります。

私は次のようなものを入力したい:

public class Test {
    public static void main(String[] args) {
        try{
            File f = new File("myfile.txt");
            Scanner s = new Scanner(f);
            System.out.println(s.next());
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

myfile.txtが.javaファイルと同じディレクトリにある場合、これは合理的と思われます。

しかし、いいえ、そのようにコードを入力すると、txtファイルはプロジェクトのルートであるsrc/と同じレベルになるはずです。承知しました。それを受け入れてそこにtxtを配置するので、クリーンアップしてビルドします。これで、netbeans(緑色の矢印ボタン)で実行すると、正常に実行されます(ビルドフォルダーにtxtファイルがない場合でも、奇妙に思えます)が、もちろん、distフォルダーでjarを直接実行しようとすると(プロジェクトが終了したら配布したいものになります)その隣のjar ofr内にtxtフォルダーがないため、プログラムは失敗します。

さて、私は戦略を変更して、論理的に見えるもの、つまりsrcディレクトリ内にtxtを配置することにします。ビルドすると、ビルドディレクトリとjar内に表示されます。

ただし、新しいFileコマンドでファイルへのパスが適切でないため、プログラムは失敗します(netbeans内と外部の両方)。だから私は変更して入力することができました

public class Test {
    public static void main(String[] args) {
        try{
            File f = new File("src/myfile.txt");
            Scanner s = new Scanner(f);
            System.out.println(s.next());
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

ただし、srcフォルダーは、貧弱な.jarファイルには何の意味もないため、もちろん、netbeansの外部では実行されません。

このおそらく些細なタスクに対処する方法を見つけることができません。

手伝って頂けますか?

4

3 に答える 3

3

jar内のテキストファイルが必要な場合は、次のように使用できます。

public class Test {
    public static void main(String[] args) {
        try{
            Scanner s = new Scanner(Test.class.getResourceAsStream("/myfile.txt")); // <- in the src folder
            Scanner s2 = new Scanner(Test.class.getResourceAsStream("./myfile.txt")); // <- in the package of your *.java file
            System.out.println(s.next());
            System.out.println(s2.next());
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}
于 2013-03-06T18:46:04.093 に答える
0

これを試して:

オブジェクトFileをこのように初期化しますFile f = new File("myfile.txt");

ここで、jarの一部としてエクスポートするのではなくmyfile.txt、同じディレクトリのjarファイルの横に配置します。

于 2013-03-06T16:03:21.420 に答える
0

まず、netbeansを使用して新しいファイルを作成すると、ファイルがプロジェクトフォルダのルートに配置されます。(私はまだこの場所を参照する方法がわかりません)。

したがって、新しいファイルを作成するときは、プロジェクトではなく、「パッケージ」を右クリックします。resourcesというパッケージを作成し、その中にファイルを入れました。私が使用したソリューション(ファイルf =新しいファイルでも機能するはずです):

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("resources/file.xml");
于 2015-07-14T05:09:01.717 に答える