Jika sudah ada di classpath, dapatkan saja dari classpath alih-alih dari sistem file disk. Jangan mengutak-atik jalur relatif masuk java.io.File
. Mereka bergantung pada direktori kerja saat ini yang sama sekali tidak dapat Anda kendalikan dari dalam kode Java.
Dengan asumsi itu ListStopWords.txt
ada dalam paket yang sama dengan FileLoader
kelas Anda , maka lakukan:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
Atau jika semua yang Anda kejar sebenarnya adalah salah InputStream
satunya:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
Ini tentu lebih disukai daripada membuat new File()
karena url
mungkin tidak selalu mewakili jalur sistem file disk, tetapi ini juga bisa mewakili jalur sistem file virtual (yang mungkin terjadi saat JAR diperluas ke memori alih-alih ke folder temp pada sistem file disk) atau bahkan jalur jaringan yang keduanya tidak sesuai definisi yang dapat dicerna oleh File
konstruktor.
Jika file tersebut -seperti petunjuk nama paket- sebenarnya adalah file properti yang layak penuh (berisi key=value
baris) dengan ekstensi yang "salah", maka Anda dapat InputStream
langsung memasukkannya ke load()
metode.
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
Catatan: saat Anda mencoba mengaksesnya dari dalam static
konteks, gunakan FileLoader.class
(atau apa pun YourClass.class
) alih-alih getClass()
contoh di atas.
properties.files
untuk2
?