パッケージ内のテキスト ファイルを読み取る方法はありますか。「a」というパッケージにある「myTextFile.txt」というファイルにアクセスしたいとしましょう。
同じパッケージにある「MyClass」というクラスからアクセスしたい。「myTextFile.txt」へのパスは何ですか? そして、次のように bufferedreader を使用できますか:BufferedReader in = new BufferedReader(new FileReader(PATH));
パッケージ内のテキスト ファイルを読み取る方法はありますか。「a」というパッケージにある「myTextFile.txt」というファイルにアクセスしたいとしましょう。
同じパッケージにある「MyClass」というクラスからアクセスしたい。「myTextFile.txt」へのパスは何ですか? そして、次のように bufferedreader を使用できますか:BufferedReader in = new BufferedReader(new FileReader(PATH));
クラスの GetResource はうまく機能します。Spring の ResourceLocator も非常に柔軟なオプションです。
ClassLoader.getResourceAsStream() (または getResource())を介して常にリソースを取得できます。また、(ClassLoader の代わりに) Class.getResourceAsStream()を介してアクセスすることもできます。相対名または絶対名 (/ で始まる) のいずれかを使用できます。
Class.getResource()
またはClassLoader.getResource()
メソッドのいずれかを使用する必要があるようです。
URL url = MyClass.class.getResource("myTextFile.txt");
URL url = MyClass.class.getClassLoader().getResource("myTextFile.txt");
また
InputStream in = MyClass.class.getResourceAsStream("myTextFile.txt");
InputStream in = MyClass.class.getClassLoader().getResourceAsStream("myTextFile.txt");
比較、および絶対パスと相対パスの説明については、この質問を参照してください。
それからあなたはすることができます
new BufferedReader(new InputStreamReader(in));
InputStream is = new BufferedInputStream( getClass(). getClassLoader(). getResourceAsStream("/a/myTextFile.txt"));
トリックを行う必要があります。arg の構造に注意してください。パッケージのルートは「/」で表され、パッケージ (つまりディレクトリ) も同様です。
プロジェクトはどこにコンパイルされますか? すべてのパスは、クラスではなく、プログラムの場所、または指定した場合はフル パスに対して相対的になります。そのパスを取得したら、どこにでも置くことができますPATH
。
ただし、そのファイルをパッケージに入れる理由はありますか? ある種のリソースディレクトリに入れるべきではありませんか?
絶対ファイルパスを入力するだけです。つまり、lcoal マシンのパスです。動作するはずです。