Java - добавление в файл внутри папки Zip - PullRequest
0 голосов
/ 02 октября 2019

Следующий код создает и добавляет один файл sheet1.xml внутри zip-файла test.zip.

  • Как мне заставить работать второй код?
  • Как мнесоздавать папки и файлы, используя Java Zip Filesystem?

Рабочая функция

    public static void main(String[] args) {        
        Map<String, String> env = new HashMap<>(); 
        env.put("create", "true");
        Path path = Paths.get("test.zip");
        URI uri = URI.create("jar:" + path.toUri());
        try (FileSystem fs = FileSystems.newFileSystem(uri, env))
        {
            Path nf = fs.getPath("sheet1.xml");
            try (Writer writer = Files.newBufferedWriter(nf, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND)) {
                writer.write("hello");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }               
    }

Не рабочий класс

public class Test { 
    String filename="test.zip"; String sheet="sheet1.xml";  
    FileSystem fs; Path nf; Writer writer;
    void setup() {      
        Map<String, String> env=new HashMap<>(); 
        env.put("create","true");
        Path path = Paths.get(filename);
        URI uri=URI.create("jar:"+path.toUri());
        try {   
            fs = FileSystems.newFileSystem(uri,env);
            nf = fs.getPath("sheet1.xml");
            try {
                writer = Files.newBufferedWriter(nf, StandardCharsets.UTF_8, 
                        StandardOpenOption.CREATE, StandardOpenOption.APPEND);
            }
            catch (IOException e){
                System.err.println(e.getMessage());
            }
        } catch (IOException e) {
            System.err.println(e.getMessage());
        }
    }   
    void loop() {
        try {
            writer.write("<row></row>");
        } catch (IOException e) {
            System.err.println("IOException"+e.getMessage());
        }
    }   
    static public void main(String[] args){
        Test Test= new Test();
        Test.setup(); Test.loop();
        System.out.println("Test");
    }
}
...