Có cách nào trong Java để xây dựng một cá thể Tệp trên tài nguyên được truy xuất từ một cái bình thông qua trình nạp lớp không?Tài nguyên Java dưới dạng tệp
Ứng dụng của tôi sử dụng một số tệp từ jar (mặc định) hoặc từ thư mục hệ thống tệp được chỉ định tại thời gian chạy (đầu vào của người dùng). Tôi đang tìm kiếm một cách nhất quán của
a) tải những tập tin này như một dòng suối
b) liệt kê các file trong thư mục người dùng định nghĩa hoặc các thư mục trong jar tương ứng
Chỉnh sửa: Rõ ràng, cách tiếp cận lý tưởng sẽ tránh xa java.io.File hoàn toàn. Có cách nào để tải một thư mục từ classpath và liệt kê nội dung của nó (tập tin/thực thể chứa trong nó)?
Tôi đồng ý nó gây phiền nhiễu - nhưng nó làm cho ClassLoader áp dụng rộng rãi hơn theo những cách khác. Ví dụ, thật dễ dàng để viết một "trình nạp lớp web" vì web rất tốt để tìm nạp các tệp, nhưng nó không thường là các tệp * liệt kê *. –
Có vẻ như tài nguyên bạn đang cố gắng tải lớn hơn 1MiB 'InputStream' bạn nhận được từ' getResourceAsStream' dừng để truy xuất byte của tài nguyên sau kích thước đó và thay vào đó trả về 0 iff, nó nằm trong hệ thống tệp nén như một cái lọ. Bạn dường như bị buộc phải sử dụng 'getResource' và tải tệp độc lập khỏi trường hợp này trong trường hợp đó. – mgttlinger
@mgttlinger: Điều đó nghe có vẻ không có ý nghĩa với tôi ... có lẽ đáng để đăng một câu hỏi mới với một repro nếu bạn có thể. –