Могу ли я открыть файловую систему zip в режиме только для чтения? - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь объединить код, чтобы получить список файлов, находящихся в каталоге или на пути к классам.

Я могу получить URL-адрес местоположения ресурса:

URI uri = FontManagerTestUtils.class.getResource("/fonts").toURI();
FileSystem fileSystem =
    FileSystems.newFileSystem(uri, Collections.emptyMap());

Но менеджеру безопасности это не нравится:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/Users/tester/.gradle/caches/modules-2/files-2.1/com.acme.utilities/acme-utils/2.0.4/2c3dd60154b9f63c52ee0defe82422c2987f69b5/acme-utils-2.0.4.jar" "write")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.security.AccessController.checkPermission(AccessController.java:884)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkWrite(SecurityManager.java:979)
    at sun.nio.fs.UnixPath.checkWrite(UnixPath.java:801)
    at sun.nio.fs.UnixFileSystemProvider.checkAccess(UnixFileSystemProvider.java:294)
    at java.nio.file.Files.isAccessible(Files.java:2455)
    at java.nio.file.Files.isWritable(Files.java:2521)
    at com.sun.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:125)
    at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:117)
    at java.nio.file.FileSystems.newFileSystem(FileSystems.java:326)
    at java.nio.file.FileSystems.newFileSystem(FileSystems.java:276)

Я не собираюсь записывать обратно в банку, и моя политика безопасности разрешает чтение изJAR-файлы на пути к классам, так есть ли способ просто сказать, чтобы он не открывался с правами записи?

...