ฉันจะสร้างjava.nio.file.Path
วัตถุจากString
วัตถุใน Java 7 ได้อย่างไร
กล่าวคือ
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
ที่เป็นรหัสที่ใช้หายไป?
textPath
ฉันจะสร้างjava.nio.file.Path
วัตถุจากString
วัตถุใน Java 7 ได้อย่างไร
กล่าวคือ
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
ที่เป็นรหัสที่ใช้หายไป?
textPath
คำตอบ:
คุณสามารถใช้Paths
คลาส:
Path path = Paths.get(textPath);
... สมมติว่าคุณต้องการใช้ระบบไฟล์เริ่มต้นแน่นอน
Path.get()
แพลตฟอร์มอิสระหรือไม่ ความหมายที่Path.get("lib","p2")
จะเป็นlib\p2
ใน Windows และlib/p2
ใน linux
จาก javadocs .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
Path p1 = Paths.get("/tmp/foo");
เป็นเช่นเดียวกับ
Path p4 = FileSystems.getDefault().getPath("/tmp/foo");
Path p3 = Paths.get(URI.create("file:///Users/joe/FileTest.java"));
Path p5 = Paths.get(System.getProperty("user.home"),"logs", "foo.log");
ใน Windows ให้สร้างไฟล์ C: \ joe \ log \ foo.log (สมมติว่าผู้ใช้เป็นโฮมเป็น C: \ joe)
ในระบบปฏิบัติการ Unix ให้สร้างไฟล์ /u/joe/logs/foo.log (สมมติว่าผู้ใช้เป็นโฮม / u / joe)
File.separarator
แทนการดูแลระบบปฏิบัติการปัจจุบัน เช่น"/tmp/foo"
เป็นFile.separator+"tmp"+File.separator+"foo"
ถ้าเป็นไปได้ฉันขอแนะนำให้สร้างPath
โดยตรงจากองค์ประกอบเส้นทาง:
Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"
แม้ว่าคำถามจะเกี่ยวกับ Java 7 ฉันคิดว่ามันเพิ่มคุณค่าให้กับการรู้ว่าจาก Java 11 เป็นต้นไปมีวิธีการคงที่ในPath
ชั้นเรียนที่ช่วยให้ทำสิ่งนี้ได้ทันที:
ด้วยพา ธ ทั้งหมดในสตริงเดียว:
Path.of("/tmp/foo");
ด้วยทางแยกย่อยในหลายสาย:
Path.of("/tmp","foo");
Paths.get
ยกเว้นมันถูกเรียกว่าก่อนหน้านี้