Làm cách nào để tạo một java.nio.file.Path
đối tượng từ một String
đối tượng trong Java 7?
I E
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
nơi ?
là mã mất tích mà sử dụng textPath
.
Làm cách nào để tạo một java.nio.file.Path
đối tượng từ một String
đối tượng trong Java 7?
I E
String textPath = "c:/dir1/dir2/dir3";
Path path = ?;
nơi ?
là mã mất tích mà sử dụng textPath
.
Câu trả lời:
Bạn chỉ có thể sử dụng Paths
lớp:
Path path = Paths.get(textPath);
... giả sử bạn muốn sử dụng hệ thống tập tin mặc định, tất nhiên.
Path.get()
nền tảng độc lập? có nghĩa là Path.get("lib","p2")
sẽ như lib\p2
trong Windows và lib/p2
trong linux
Từ javadocs .. http://docs.oracle.com/javase/tutorial/essential/io/pathOps.html
Path p1 = Paths.get("/tmp/foo");
giống như
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");
Trong Windows, tạo tệp C: \ joe \ log \ foo.log (giả sử nhà của người dùng là C: \ joe)
Trong Unix, tạo tệp /u/joe/logs/foo.log (giả sử nhà của người dùng là / u / joe)
File.separarator
thay vì chăm sóc HĐH hiện tại. Ví dụ như "/tmp/foo"
làFile.separator+"tmp"+File.separator+"foo"
Nếu có thể tôi sẽ đề nghị tạo Path
trực tiếp từ các thành phần đường dẫn:
Path path = Paths.get("C:", "dir1", "dir2", "dir3");
// if needed
String textPath = path.toString(); // "C:\\dir1\\dir2\\dir3"
Ngay cả khi câu hỏi liên quan đến Java 7, tôi nghĩ rằng nó bổ sung giá trị để biết rằng từ Java 11 trở đi, có một phương thức tĩnh trong Path
lớp cho phép thực hiện điều này ngay lập tức:
Với tất cả các đường dẫn trong một Chuỗi:
Path.of("/tmp/foo");
Với đường dẫn được chia thành nhiều chuỗi:
Path.of("/tmp","foo");
Paths.get
.