Làm cách nào để sử dụng ClassLoader.getResources()
để tìm tài nguyên đệ quy từ đường dẫn lớp của tôi?Làm thế nào để sử dụng ClassLoader.getResources() một cách chính xác?
Ví dụ:
tìm mọi nguồn lực trong "thư mục"
META-INF
: Hãy tưởng tượng một cái gì đó giống nhưgetClass().getClassLoader().getResources("META-INF")
Thật không may, điều này không chỉ lấy một
URL
chính xác này "thư mục".mọi nguồn lực tên
bla.xml
(recursivly)getClass().getClassLoader().getResources("bla.xml")
Nhưng điều này trả về một sản phẩm nào
Enumeration
.
Và làm câu hỏi thưởng: ClassLoader.getResources()
khác với ClassLoader.getResource()
như thế nào?
@ Andrew, rất nhiều các khuôn khổ lặp cho một số tệp dựa trên tên hoặc phần mở rộng trong lưu trữ để tự động hóa một số quy trình, như tìm kiếm ActionBeans of Stripes hoặc tệp hbm.xml cho ngủ đông. – bestsss
Xem http://stackoverflow.com/questions/1429172/how-do-i-list-the-files-inside-a-jar-file/ – Vadzim
Tiếng vang tại sao nó gây nhầm lẫn cho bạn là getResources hoạt động trên bộ nạp lớp có thể có nhiều JAR trong classpath. Vì vậy, nếu bạn có nhiều JAR với cùng một tài nguyên, bạn sẽ có được tất cả. Tuy nhiên nó không có ý định tìm kiếm các thư mục bên trong. Với getResources ("META-INF"), bạn nhận được tất cả các thư mục META-INFO trong đường dẫn tìm kiếm của CL và nếu CL là một trình nạp lớp tệp jar đơn, bạn sẽ nhận được một mục nhập. – eckes