แม้ว่าโซลูชันดั้งเดิมสำหรับการรับไดเร็กทอรีปัจจุบันโดยใช้empty Stringงาน แต่ขอแนะนำให้ใช้user.dirคุณสมบัติสำหรับไดเร็กทอรีปัจจุบันและuser.homeสำหรับโฮมไดเร็กทอรี
Path currentPath = Paths.get(System.getProperty("user.dir"));
Path filePath = Paths.get(currentPath.toString(), "data", "foo.txt");
System.out.println(filePath.toString());
เอาต์พุต:
/Users/user/coding/data/foo.txt
จากเอกสารคู่มือคลาสJava Path :
เส้นทางจะถือว่าเป็นเส้นทางว่างหากประกอบด้วยองค์ประกอบชื่อเดียวemptyเท่านั้น การเข้าถึงไฟล์โดยใช้empty path is equivalent to accessing the default directoryระบบไฟล์
ทำไมถึงใช้Paths.get("").toAbsolutePath()งานได้
เมื่อสตริงว่างถูกส่งไปยังวัตถุที่Paths.get("")ส่งคืนPathจะมีเส้นทางว่าง แต่เมื่อเราเรียกใช้Path.toAbsolutePath()จะตรวจสอบว่าความยาวของเส้นทางมากกว่าศูนย์หรือไม่มิฉะนั้นจะใช้user.dirคุณสมบัติของระบบและส่งคืนเส้นทางปัจจุบัน
นี่คือรหัสสำหรับการติดตั้งระบบไฟล์ Unix: UnixPath.toAbsolutePath ()
โดยทั่วไปคุณต้องสร้างPathอินสแตนซ์อีกครั้งเมื่อคุณแก้ไขเส้นทางไดเร็กทอรีปัจจุบัน
นอกจากนี้ฉันขอแนะนำให้ใช้File.separatorCharสำหรับรหัสอิสระของแพลตฟอร์ม
Path currentRelativePath = Paths.get("");
Path currentDir = currentRelativePath.toAbsolutePath();
String filename = "data" + File.separatorChar + "foo.txt";
Path filepath = currentDir.resolve(filename);
System.out.println(filepath);
เอาท์พุต:
/Users/user/coding/data/foo.txt
filepath.toString()