Kebingungan atas direktori kerja saat ini dalam metode getAbsolutePath File

Aug 16 2020

File getAbsolutePath memiliki kecenderungan bahwa jika jalur relatif atau hanya nama file disediakan di konstruktor file, maka itu akan menyelesaikan jalur absolut dengan mengawali direktori kerja saat ini.

Definisi dari direktori kerja saat ini adalah direktori tempat kita menjalankan Program Java. Dalam contoh saya, program java saya berada di dalamD:\my-app\src\App.java

Ketika saya melakukan a System.out.println(System.getProperty("user.dir"));

Maka idealnya harus dicetak D:\my-app\src

Tapi ini sebenarnya sedang mencetak D:\my-app

Kenapa gitu?

Jawaban

1 Joni Aug 16 2020 at 15:33

Saat Anda memulai aplikasi dari IntelliJ, direktori kerjanya disetel sesuai dengan apa yang disetel di "Direktori kerja" dalam dialog "Konfigurasi Jalankan / Debug" .

Di sana, Anda dapat mengatur direktori kerja ke nilai tetap seperti D:\my-app\src. Pilihan lainnya adalah menggunakan variabel jalur . Daftar variabel yang tersedia tampaknya dapat bergantung pada banyak hal - buka dialog dan lihat apa yang tersedia. Salah satu opsi yang saya lihat adalah $FileDir$yang saya bayangkan akan menjadi direktori file kode sumber.

Sandy Aug 16 2020 at 15:29

Saya rasa saya menemukan solusinya. Intellij sebenarnya menyebabkan masalah ini dengan secara implisit menyetel folder src sebagai folder sumber. Saya menemukannya dengan membuka pengaturan modul dalam Intellij. Ketika saya menjalankan hal yang sama dari prompt perintah, direktori kerja yang benar yaitu D:\my-app\src\dipilih.