2013-03-19 38 views
135

Có thể lấy đối tượng Đường dẫn từ một số java.io.File không?Nhận đối tượng java.nio.file.Path từ java.io.File

Tôi biết bạn có thể chuyển đổi đường dẫn sang tệp bằng phương pháp toFile() 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?

+0

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

+0

Có, tôi đã thấy các phương thức phân giải và giải quyếtSibling, nhưng điều đó đã không chính xác chuyển đổi từ tệp (hoặc chuỗi) thành đường dẫn, mà đúng hơn là đã phối hợp nó theo một cách. – Karlovsky120

+1

Đây là [tài liệu] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#toPath()) @VivinPaliath cũng ám chỉ. – Perception

Trả lời

173

Có, bạn có thể lấy nó từ đối tượng File bằng cách sử dụng File.toPath(). Hãy nhớ rằng đây chỉ dành cho Java 7+. Java phiên bản 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? – Karlovsky120

+4

'Đường dẫn' đã được giới thiệu trong Java 7, vì vậy rất tiếc, không có cách nào để thực hiện điều này trong Java 6 trở xuống. –

29

Từ the documentation:

Paths liên quan đến việc mặc định provider nói chung là tương thích với lớp java.io.File. Đường dẫn được tạo bởi các nhà cung cấp khác là không thể tương thích với tên đường dẫn trừu tượng được đại diện bởi java.io.File. Phương thức toPath có thể được sử dụng để lấy Đường dẫn từ tên đường dẫn trừu tượng được đại diện bởi đối tượng java.io.File. Kết quả Đường dẫn có thể được sử dụng để vận hành trên cùng một tệp với đối tượng java.io.File. Ngoài ra, phương pháp toFile hữu ích đối với xây dựng một File từ đại diện String của số Path.

(tôi nhấn mạnh)

Vì vậy, ví toFile:

Trả về một đối tượng File đại diện cho con đường này.

toPath:

Trả về một đối tượng java.nio.file.Path xây dựng từ con đường trừu tượng này.

+1

Ông muốn đối diện. –

+3

@Vivin API cung cấp cả hai ... – wchargin

+0

Tôi không tranh chấp điều đó :). Tôi chỉ đề cập đến những gì OP muốn. –

5

Như nhiều người đã đề xuất, JRE v1.7 trở lên có File.toPath();

File yourFile = ...; 
Path yourPath = yourFile.toPath(); 

On Oracle jdk 1.7 documentation mà cũng được đề cập trong bài viết khác trên, mã tương đương sau đây được mô tả trong mô tả cho phương pháp toPath(), mà có thể làm việc cho JRE v1.6;

File yourFile = ...; 
Path yourPath = FileSystems.getDefault().getPath(yourFile.getPath()); 
Các vấn đề liên quan