2010-03-22 51 views

Trả lời

28

File.getCanonicalPath() giải quyết symlink

Một tên đường dẫn kinh điển vừa là tuyệt đối và độc đáo. Định nghĩa chính xác về hình thức kinh điển là phụ thuộc vào hệ thống. Phương thức này trước tiên chuyển đổi tên đường dẫn này thành dạng tuyệt đối nếu cần thiết, như thể bằng cách gọi phương thức getAbsolutePath() và sau đó ánh xạ nó tới biểu mẫu duy nhất của nó theo cách phụ thuộc vào hệ thống. Điều này thường liên quan đến việc loại bỏ các tên dự phòng như "." và ".." từ tên đường dẫn, giải quyết các liên kết tượng trưng (trên nền tảng UNIX) và chuyển đổi các ký tự ổ đĩa thành một trường hợp chuẩn (trên nền tảng Microsoft Windows).

Tôi giả sử bạn có thể so sánh kết quả của getCanonicalPath()getAbsolutePath().

Cập nhật: Dường như câu hỏi này đã được hỏi - kiểm tra the answers there

+1

Nghe có vẻ như nó có thể hoạt động - Tôi tự hỏi nó tốn kém như thế nào khi gọi một đối tượng hệ thống tệp thực (tôi cho rằng nó phải kiểm tra từng thư mục trên cây, khi tôi chỉ quan tâm đến thư mục cuối cùng) ... –

+1

Cảm ơn - Sử dụng các commons của Apache IO như đã lưu ý trong http://stackoverflow.com/questions/813710/java-1-6-determine-symbolic-links/813730#813730 có vẻ như là một giải pháp tốt. –

Các vấn đề liên quan