すでにクラスパスにある場合は、ディスクファイルシステムからではなく、クラスパスから取得してください。で相対パスをいじらないでくださいjava.io.File
。それらは、Javaコード内から完全に制御できない現在の作業ディレクトリに依存しています。
それListStopWords.txt
がFileLoader
クラスと同じパッケージにあると仮定して、次のようにします:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
または、あなたが最終的に求めているすべてが実際InputStream
にそれである場合:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
は必ずしもディスクファイルシステムパスを表すとは限らないnew File()
ため、これはを作成するよりも確かに推奨されurl
ますが、仮想ファイルシステムパスを表すこともできます(これは、JARがディスクファイルシステムの一時フォルダではなくメモリに展開されるときに発生する可能性があります)。または、両方とも定義ごとにFile
コンストラクターでダイジェストできないネットワークパスです。
ファイルが(パッケージ名のヒントとして)実際に、「誤った」拡張子のみを含む十分に価値のあるプロパティファイル(key=value
行を含む)である場合はInputStream
、をload()
メソッドにすぐにフィードできます。
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
注:static
コンテキスト内からアクセスする場合は、上記の例の代わりにFileLoader.class
(または何でもYourClass.class
)を使用してgetClass()
ください。
properties.files
ために2
?