Nhận đối tượng java.nio.file.Path từ java.io.File


215

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?


Haev bạn đã xem tài liệu API?
Vivin Paliath

Có, tôi đã thấy các phương thức giải quyết và giải quyết vấn đề, nhưng điều đó không chuyển đổi chính xác từ tệp (hoặc chuỗi) sang đường dẫn, mà chỉ đưa nó vào một cách.
Karlovsky120

1
Đây là tài liệu @VivinPaliath đang ám chỉ quá.
Nhận thức

1
Nó làm tôi ngạc nhiên về cách câu hỏi ngu ngốc nhất có thể (ý tôi là, thôi, nó nằm trong tài liệu, tìm kiếm google ngắn sẽ trả lời nó) đang làm cho tôi nhiều điểm nhất trên trang web. : D
Karlovsky120

@ Karlovsky120 không nên làm bạn ngạc nhiên nếu bạn cố gắng tự google nó;)
9ilsdx 9rvj 0lo

Câu trả lời:


288

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ó.


1
Có cách nào để đạt được điều này trong Java 6 hoặc thấp hơn không?
Karlovsky120

8
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.
Vivin Paliath

33

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ới java.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ởi java.io.File. Các toPathphươ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ới java.io.Fileđối tượng. Ngoài ra, toFilephương thức này rất hữu ích để xây dựng a Filetừ Stringbiểu diễn của a Path.

(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.

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.


1
Anh ấy muốn điều ngược lại.
Vivin Paliath

Tôi không tranh chấp rằng :). Tôi chỉ đề cập đến những gì OP muốn.
Vivin Paliath


10

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());
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.