Saya memiliki proyek dengan 2 paket:
tkorg.idrs.core.searchengines
tkorg.idrs.core.searchengines
Dalam paket (2) saya memiliki file teks ListStopWords.txt
, dalam paket (1) saya memiliki kelas FileLoadder
. Ini kodenya FileLoader
:
File file = new File("properties\\files\\ListStopWords.txt");
Tetapi ada kesalahan ini:
The system cannot find the path specified
Bisakah Anda memberikan solusi untuk memperbaikinya? Terima kasih.
properties.files
untuk2
?Jawaban:
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 denganFileLoader
kelas Anda , maka lakukan:Atau jika semua yang Anda kejar sebenarnya adalah salah
InputStream
satunya:Ini tentu lebih disukai daripada membuat
new File()
karenaurl
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 olehFile
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 dapatInputStream
langsung memasukkannya keload()
metode.Catatan: saat Anda mencoba mengaksesnya dari dalam
static
konteks, gunakanFileLoader.class
(atau apa punYourClass.class
) alih-alihgetClass()
contoh di atas.sumber
FileLoader
adalah kelas khusus OP sendiri. Ini seharusnya menjadi kelas yang tepat di mana Anda mencoba untuk mendapatkan sumber daya. Jadi begituNameOfYourCurrentClass.class.getResourceAsStream(...)
. TheClassLoader.class
akan gagal jikaClassLoader
kelas yang dimuat oleh classloader yang berbeda, yang mungkin terjadi dalam sebuah "perusahaan" aplikasi dengan hirarki beberapa classloaders (seperti aplikasi web Java EE).Baris berikut dapat digunakan jika kita ingin menentukan path relatif dari file tersebut.
sumber
InputStream
?InputStream is = new FileInputStream("./properties/files/ListStopWords.txt");
Jalur relatif bekerja di java menggunakan. operator.
Jadi pertanyaannya adalah bagaimana Anda mengetahui jalur di mana java saat ini mencari?
lakukan percobaan kecil
Amati hasilnya, Anda akan mengetahui direktori saat ini di mana java mencari. Dari sana, cukup gunakan operator ./ untuk mencari file Anda.
misalnya jika outputnya
dan file Anda ada di folder MyProject cukup gunakan
Semoga ini membantu
sumber
sumber
.class
literal hanya dengan memberikan nama lengkap kelasnya.mencoba
.\properties\files\ListStopWords.txt
sumber
Saya bisa saja berkomentar tetapi saya kurang memiliki reputasi untuk itu. Jawaban Samrat berhasil untuk saya. Lebih baik melihat jalur direktori saat ini melalui kode berikut.
Saya hanya menggunakannya untuk memperbaiki masalah yang saya hadapi dalam proyek saya. Pastikan untuk menggunakan ./ untuk kembali ke direktori induk dari direktori saat ini.
sumber
Sementara jawaban yang diberikan oleh BalusC berfungsi untuk kasus ini, itu akan rusak ketika jalur file berisi spasi karena di URL, ini sedang diubah menjadi% 20 yang bukan nama file yang valid. Jika Anda membuat objek File menggunakan URI daripada String, spasi putih akan ditangani dengan benar:
sumber
Saya ingin mengurai 'command.json' di dalam src / main // js / Simulator.java. Untuk itu saya menyalin file json di folder src dan memberikan jalur absolut seperti ini:
sumber
Dengan asumsi Anda ingin membaca dari
resources
direktori diFileSystem
kelas.Catatan: Memimpin
.
tidak dibutuhkan.sumber
Bagi saya sebenarnya masalahnya adalah dari jalur kelas objek File
<project folder path> or ./src
, jadi gunakanFile file = new File("./src/xxx.txt");
memecahkan masalah sayasumber
String basePath = File baru ("myFile.txt"). GetAbsolutePath (); basepath ini dapat Anda gunakan sebagai jalur yang benar dari file Anda
sumber
Jika Anda mencoba memanggil
getClass()
dari metode Statis atau blok statis, Anda dapat melakukan cara berikut.Anda dapat menghubungi
getClass()
padaProperties
objek yang memuat ke dalam.sumber
Jika file teks tidak sedang dibaca, coba gunakan jalur absolut yang lebih dekat (jika Anda ingin dapat menggunakan jalur absolut lengkap) seperti ini:
asumsikan bahwa jalur absolut adalah:
sumber