Có thể lấy một đối tượng Path từ một java.io.File ?
Tôi biết bạn có thể chuyển đổi đường dẫn thành tệp bằng toFile()phương thức, nhưng tôi không thể tìm thấy chuyển đổi ngược lại. Có cách nào để làm điều này trong Java 6 hoặc thấp hơn không?
Có thể lấy một đối tượng Path từ một java.io.File ?
Tôi biết bạn có thể chuyển đổi đường dẫn thành tệp bằng toFile()phương thức, nhưng tôi không thể tìm thấy chuyển đổi ngược lại. Có cách nào để làm điều này trong Java 6 hoặc thấp hơn không?
Câu trả lời:
Có, bạn có thể lấy nó từ Fileđối tượng bằng cách sử dụng File.toPath(). Hãy nhớ rằng điều này chỉ dành cho Java 7+. Phiên bản Java 6 trở xuống không có nó.
Pathđã được giới thiệu trong Java 7, vì vậy thật không may, không có cách nào để làm điều này trong Java 6 trở xuống.
Từ tài liệu :
Các đường dẫn được liên kết với mặc định
providerthường tương thích vớijava.io.Filelớp. Các đường dẫn được tạo bởi các nhà cung cấp khác dường như không thể tương tác với các tên đường dẫn trừu tượng được đại diện bởijava.io.File. CáctoPathphương pháp có thể được sử dụng để có được một con đường từ tên đường dẫn trừu tượng đại diện bởi một đối tượng java.io.File. Đường dẫn kết quả có thể được sử dụng để hoạt động trên cùng một tệp vớijava.io.Fileđối tượng. Ngoài ra,toFilephương thức này rất hữu ích để xây dựng aFiletừStringbiểu diễn của aPath.
(nhấn mạnh của tôi)
Vì vậy, cho toFile:
Trả về một
Fileđối tượng đại diện cho đường dẫn này.
Và toPath:
Trả về một
java.nio.file.Pathđối tượng được xây dựng từ đường dẫn trừu tượng này.
Bạn có thể muốn File.toPath().
Như nhiều người đã đề xuất, JRE v1.7 trở lên có File.toPath ();
File yourFile = ...;
Path yourPath = yourFile.toPath();
Trên tài liệu jdk 1.7 của Oracle cũng được đề cập trong các bài viết khác ở trên, mã tương đương sau được mô tả trong mô tả cho phương thức toPath (), có thể hoạt động cho JRE v1.6;
File yourFile = ...;
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath());