Tôi đang cố gắng sử dụng Hệ thống tệp NIO để truy cập vào một cái bình bên trong một cái bình khác. Gọi jar bên ngoài my-outer.jar và khu vực nội my-inner.jar (Sử dụng Java 8 và Windows 7 nhưng tôi nghĩ đó không phải là vấn đề)Làm thế nào tôi có thể tạo một Hệ thống tệp vào một cái bình bên trong một cái lọ khác
Tôi đang sử dụng đoạn mã sau
String zipfilePath = "c:/testfs/my-outer.jar!/my-inner.jar";
Path path = Paths.get(zipfilePath);
try(ZipFileSystem zipfs = (ZipFileSystem) FileSystems.newFileSystem(path, null))
{ ... }
nhưng tôi nhận được ngoại lệ dưới đây khi cố gắng tạo mà newFileSystem:
Exception in thread "main" java.nio.file.FileSystemNotFoundException: C:\testfs\my-outer.jar!\my-inner.jar
Lưu ý rằng nếu tôi chỉ cần sử dụng jar bên ngoài như FileSystem, mà làm việc hoàn toàn tốt đẹp và tôi có thể đọc và ghi các file từ nó đẹp . Nó chỉ là khi tôi cố gắng tiếp cận với kho lưu trữ bên trong mà những rắc rối bắt đầu.
FileSystem không hỗ trợ ký hiệu JarURLConnection?
Từ tìm đến các nguồn bị nén của ZipFileSystem, có vẻ như nó chỉ hỗ trợ các tệp "thực". Đối với kho lưu trữ lồng nhau ZIP (jar) bạn sẽ cần sử dụng gói java.util.zip "cấp thấp" (hoặc trích xuất vòng cung bên trong vào đĩa, mặc dù tôi sẽ không gọi đó là giải pháp tốt). – vbezhenar
Không phải là một ý tưởng hay. Ngay cả một hệ thống tệp JAR một cấp sẽ hoạt động rất kém. – EJP