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.txtada dalam paket yang sama dengan FileLoaderkelas Anda , maka lakukan:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
Atau jika semua yang Anda kejar sebenarnya adalah salah InputStreamsatunya:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
Ini tentu lebih disukai daripada membuat new File()karena urlmungkin 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 Filekonstruktor.
Jika file tersebut -seperti petunjuk nama paket- sebenarnya adalah file properti yang layak penuh (berisi key=valuebaris) dengan ekstensi yang "salah", maka Anda dapat InputStreamlangsung memasukkannya ke load()metode.
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
Catatan: saat Anda mencoba mengaksesnya dari dalam statickonteks, gunakan FileLoader.class(atau apa pun YourClass.class) alih-alih getClass()contoh di atas.
properties.filesuntuk2?