Pertanyaan Mendapatkan Direktori Kerja Saat Ini di Jawa


Saya ingin mengakses direktori kerja saya saat ini menggunakan

 String current = new java.io.File( "." ).getCanonicalPath();
        System.out.println("Current dir:"+current);
 String currentDir = System.getProperty("user.dir");
        System.out.println("Current dir using System:" +currentDir);

Keluaran:

Current dir: C:\WINDOWS\system32
Current dir using System: C:\WINDOWS\system32

Output saya tidak benar karena drive C bukan direktori saya saat ini. Butuh bantuan dalam hal ini.


788
2018-02-02 05:24


asal


Jawaban:


public class JavaApplication1 {
  public static void main(String[] args) {
       System.out.println("Working Directory = " +
              System.getProperty("user.dir"));
  }
}

Ini akan mencetak a lengkapi jalur absolut dari tempat aplikasi Anda diinisialisasi.


905
2017-09-29 21:12



Lihat: http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html

Menggunakan java.nio.file.Path dan java.nio.file.Paths, Anda dapat melakukan hal berikut untuk menunjukkan apa yang menurut Java adalah jalur Anda saat ini. Ini untuk 7 dan seterusnya, dan menggunakan NIO.

Path currentRelativePath = Paths.get("");
String s = currentRelativePath.toAbsolutePath().toString();
System.out.println("Current relative path is: " + s);

Output ini Current relative path is: /Users/george/NetBeansProjects/Tutorials bahwa dalam kasus saya adalah tempat saya menjalankan kelas. Membangun jalur dengan cara yang relatif, dengan tidak menggunakan pemisah utama untuk menunjukkan Anda membangun jalur absolut, akan menggunakan jalur relatif ini sebagai titik awal.


310
2018-04-11 17:10



Berikut ini bekerja di Java 7 ke atas (lihat sini untuk dokumentasi).

import java.nio.file.Paths;

Paths.get(".").toAbsolutePath().normalize().toString();

200
2018-03-12 12:03



Ini akan memberi Anda jalur direktori kerja Anda saat ini:

Path path = FileSystems.getDefault().getPath(".");

Dan ini akan memberi Anda path ke file bernama "Foo.txt" di direktori kerja:

Path path = FileSystems.getDefault().getPath("Foo.txt");

Edit: Untuk mendapatkan jalur absolut dari direktori saat ini dari root filesystem:

Path path = FileSystems.getDefault().getPath(".").toAbsolutePath();

30
2017-09-15 20:01



Ini adalah solusi untuk saya

File currentDir = new File("");

29
2018-05-28 23:09



Apa yang membuatmu berpikir demikian c: \ windows \ system32 bukan direktori Anda saat ini? Itu user.dir properti secara eksplisit menjadi "direktori kerja pengguna saat ini".

Dengan kata lain, kecuali Anda memulai Java dari baris perintah, c: \ windows \ system32 mungkin adalah CWD Anda. Artinya, jika Anda mengklik dua kali untuk memulai program Anda, CWD tidak mungkin menjadi direktori yang Anda klik ganda dari.

Edit: Tampaknya ini hanya berlaku untuk windows lama dan / atau versi Java.


29
2018-02-02 05:39



this.getClass().getClassLoader().getResource("").getPath()

23
2018-05-15 13:50



Menggunakan CodeSource#getLocation().

Ini berfungsi dengan baik dalam file JAR juga. Anda dapat memperoleh CodeSource oleh ProtectionDomain#getCodeSource() dan ProtectionDomain pada gilirannya dapat diperoleh dengan Class#getProtectionDomain().

public class Test {
    public static void main(String... args) throws Exception {
        URL location = Test.class.getProtectionDomain().getCodeSource().getLocation();
        System.out.println(location.getFile());
    }
}

23
2018-01-26 12:13



umumnya, sebagai objek File:

File getCwd() {
  return new File("").getAbsoluteFile();
}

Anda mungkin ingin memiliki string yang memenuhi syarat seperti "D: / a / b / c" lakukan:

getCwd().getAbsolutePath()

17
2017-12-28 03:11



Saya menggunakan Linux dan mendapatkan hasil yang sama untuk kedua pendekatan ini:

@Test
public void aaa()
{
    System.err.println(Paths.get("").toAbsolutePath().toString());

    System.err.println(System.getProperty("user.dir"));
}

Paths.get("") dokumen

System.getProperty("user.dir") dokumen


12
2018-02-02 05:37



Direktori kerja saat ini didefinisikan berbeda dalam implementasi Java yang berbeda. Untuk versi tertentu sebelum Java 7 tidak ada cara yang konsisten untuk mendapatkan direktori kerja. Anda dapat mengatasi ini dengan meluncurkan file Java dengan -D dan mendefinisikan variabel untuk menyimpan info

Sesuatu seperti

java -D com.mycompany.workingDir="%0"

Itu tidak benar, tetapi Anda mendapatkan ide itu. Kemudian System.getProperty("com.mycompany.workingDir")...


4
2018-06-25 16:29