Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改变一个ZipEntry的根?_Java_Zip - Fatal编程技术网

Java 改变一个ZipEntry的根?

Java 改变一个ZipEntry的根?,java,zip,Java,Zip,我的项目中有一些xml模板,它们被修改并添加到zip文件中。问题是模板都在一个模板文件夹中,但是zip文件的预期格式是将它们直接放在根目录中 项目层次结构: 模板/blah.xml 预期的zip文件层次结构: blah.xml 在不将xml文件移动到项目的根文件夹中的情况下,如何实现这一点 谢谢您可以将ZipEntry子类化,让它做任何您想做的事情。但是,您需要找出代码是如何获得内容的,然后修改它以获得正确的资源。我的大脑已经崩溃了。。。通过为输入和输出使用不同的名称 byte[] bu

我的项目中有一些xml模板,它们被修改并添加到zip文件中。问题是模板都在一个模板文件夹中,但是zip文件的预期格式是将它们直接放在根目录中

项目层次结构: 模板/blah.xml

预期的zip文件层次结构: blah.xml

在不将xml文件移动到项目的根文件夹中的情况下,如何实现这一点


谢谢

您可以将ZipEntry子类化,让它做任何您想做的事情。但是,您需要找出代码是如何获得内容的,然后修改它以获得正确的资源。

我的大脑已经崩溃了。。。通过为输入和输出使用不同的名称

    byte[] buf = new byte[1024];

    try
    {
        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(targetFile));

        FileInputStream in = new FileInputStream("templates/blah.xml");

        out.putNextEntry(new ZipEntry("blah.xml"));

        int len;
        while ((len = in.read(buf)) > 0)
        {
            out.write(buf, 0, len);
        }

        out.closeEntry();
        in.close();
        out.close();
    } catch (IOException e)
    {
        e.printStackTrace();
    }