Dapatkan Direktori Kerja Saat Ini di Java

1. Ikhtisar

Ini adalah tugas yang mudah untuk mendapatkan direktori kerja saat ini di Java, tetapi sayangnya, tidak ada API langsung yang tersedia di JDK untuk melakukan ini.

Dalam tutorial ini, kita akan belajar bagaimana mendapatkan direktori kerja saat ini di Java dengan java.lang. System , java.io.File, java.nio.file.FileSystems, dan java.nio.file.Paths .

2. Sistem

Mari kita mulai dengan solusi standar menggunakan System # getProperty , dengan asumsi nama direktori kerja kita saat ini adalah Baeldung di seluruh kode:

static final String CURRENT_DIR = "Baeldung"; @Test void whenUsingSystemProperties_thenReturnCurrentDirectory() { String userDirectory = System.getProperty("user.dir"); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Kami menggunakan kunci properti bawaan Java user.dir untuk mengambil direktori kerja saat ini dari peta properti Sistem . Solusi ini berfungsi di semua versi JDK.

3. File

Mari kita lihat solusi lain menggunakan java.io.File :

@Test void whenUsingJavaIoFile_thenReturnCurrentDirectory() { String userDirectory = new File("").getAbsolutePath(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Di sini, File # getAbsolutePath secara internal menggunakan System # getProperty untuk mendapatkan nama direktori, mirip dengan solusi pertama kami. Ini adalah solusi tidak standar untuk mendapatkan direktori kerja saat ini, dan bekerja di semua versi JDK.

4. FileSystems

Alternatif lain yang valid adalah menggunakan API java.nio.file.FileSystems baru :

@Test void whenUsingJavaNioFileSystems_thenReturnCurrentDirectory() { String userDirectory = FileSystems.getDefault() .getPath("") .toAbsolutePath() .toString(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Solusi ini menggunakan Java NIO API baru, dan hanya berfungsi dengan JDK 7 atau lebih tinggi .

5. Jalan

Dan terakhir, mari kita lihat solusi yang lebih sederhana untuk mendapatkan direktori saat ini menggunakan java.nio.file.Paths API:

@Test void whenUsingJavaNioPaths_thenReturnCurrentDirectory() { String userDirectory = Paths.get("") .toAbsolutePath() .toString(); assertTrue(userDirectory.endsWith(CURRENT_DIR)); }

Di sini, Paths # get secara internal menggunakan FileSystem # getPath untuk mengambil path. Ini menggunakan Java NIO API baru, jadi solusi ini hanya berfungsi dengan JDK 7 atau lebih tinggi .

6. Kesimpulan

Dalam tutorial ini, kami menjelajahi empat cara berbeda untuk mendapatkan direktori kerja saat ini di Java. Dua solusi pertama berfungsi di semua versi JDK sedangkan dua solusi terakhir hanya berfungsi dengan JDK 7 atau lebih tinggi.

Kami merekomendasikan penggunaan solusi Sistem karena efisien dan mudah, kami dapat menyederhanakannya dengan menggabungkan panggilan API ini dalam metode utilitas statis dan mengaksesnya secara langsung.

Kode sumber untuk tutorial ini tersedia di GitHub - ini adalah proyek berbasis Maven, jadi seharusnya mudah untuk mengimpor dan menjalankan apa adanya.