Tôi nhận được một URL định vị tệp cục bộ (thực tế là tôi nhận được URL không nằm trong tầm kiểm soát của mình). URL được thoát hợp lệ như được định nghĩa trong RFC2396. Làm thế nào tôi có thể chuyển đổi nó thành một đối tượng Tệp Java?Java: cách lấy Tệp từ URL thoát?
Funnily đủ, phương pháp này getfile URL() trả về một String, không phải là một tập tin.
Tôi đã tạo thư mục có tên "/ tmp/some dir" (có ký tự khoảng cách giữa "một số" và "dir"), được định vị chính xác theo URL sau: "tệp: /// tmp/một số% 20dir "(dấu ngoặc kép được thêm vào để rõ ràng).
Làm cách nào để chuyển đổi URL đó thành tệp Java?
Để cung cấp chi tiết hơn về vấn đề của tôi, các bản in sau sai:
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile());
System.out.println("Does dir exist? " + f.exists());
Trong khi sau (bằng tay thay thế "% 20" với một không gian) in đúng:
URL url = new URL("file:///tmp/some%20dir");
File f = new File(url.getFile().replaceAll("%20", " "));
System.out.println("Does dir exist? " + f.exists());
Lưu ý rằng Tôi không yêu cầu lý do tại sao ví dụ đầu tiên in sai hoặc lý do tại sao ví dụ thứ hai bằng cách sử dụng hack của tôi replaceAll in true, tôi hỏi ho w để chuyển đổi URL đã thoát thành đối tượng Tệp Java.
EDIT: cảm ơn tất cả, điều này gần như là một sự lừa gạt nhưng không chính xác.
ngớ ngẩn tôi đang tìm kiếm một phương pháp helper bên trong lớp URL đó.
Các công trình sau đây như mong đợi để có được một file Java từ một URL Java:
URL url = new URL("file:///home/nonet/some%20dir");
File f = new File(URLDecoder.decode(url.getFile(), "UTF-8"));
Xem thêm http://weblogs.java.net/blog/kohsuke/archive/2007/04/how_to_convert.html cho một lời cảnh báo. – Vadzim