Spec-Zone .ru
спецификации, руководства, описания, API
|
Провайдер файловой системы zip, представленный в Java SE 7 выпусков, является реализацией пользовательского провайдера файловой системы. Провайдер файловой системы zip обрабатывает zip или файл JAR как файловая система и обеспечивает возможность управлять содержанием файла. Провайдер файловой системы zip создает многократные файловые системы — одна файловая система для каждой zip или файла JAR.
demo/nio/zipfs/src.zip
файл в Вашем Java SE 7 установок содержит исходный код для провайдера файловой системы zip. Это также содержит Demo.java
class, который показывает, как использовать провайдера файловой системы zip.
Можно использовать методы фабрики java.nio.file.FileSystems
class, чтобы создать новую файловую систему zip или получить ссылку на существующую файловую систему zip. Создайте файловую систему zip, определяя путь zip или файла JAR одним из следующих способов:
java.net.JarURLConnection
class URI uri = URI.create("jar:file:/codeSamples/zipfs/zipfstest.zip"); FileSystem fs = FileSystems.newFileSystem(uri, env);
Path zipfile = Paths.get("/codeSamples/zipfs/zipfstest.zip"); FileSystem fs = FileSystems.newFileSystem(zipfile, env, null);
Определите параметры конфигурации для файловой системы zip в java.util.Map
объект, который передают к FileSystems.newFileSystem
метод. См. тему Свойств Файловой системы Zip для информации о специфичных для провайдера свойствах конфигурации для файловой системы zip.
Как только у Вас есть экземпляр файловой системы zip, можно вызвать методы java.nio.file.FileSystem
и java.nio.file.Path
классы, чтобы выполнить операции, такие как копирование, перемещение, и переименование файлов, так же как изменение атрибутов файла.
Следующий пример кода показывает, как создать файловую систему zip и скопировать файл в новую файловую систему zip.
import java.util.*; import java.net.URI; import java.nio.file.Path; import java.nio.file.*; public class ZipFSPUser { public static void main(String [] args) throws Throwable { Map<String, String> env = new HashMap<>(); env.put("create", "true"); // locate file system by using the syntax // defined in java.net.JarURLConnection URI uri = URI.create("jar:file:/codeSamples/zipfs/zipfstest.zip"); try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) { Path externalTxtFile = Paths.get("/codeSamples/zipfs/SomeTextFile.txt"); Path pathInZipfile = zipfs.getPath("/SomeTextFile.txt"); // copy a file into the zip file externalTxtFile.copyTo(pathInZipfile); } } }