Java/Groovy:ZIP 文件并为其分配权限

Posted

技术标签:

【中文标题】Java/Groovy:ZIP 文件并为其分配权限【英文标题】:Java/Groovy: ZIP files and assign permissions to them 【发布时间】:2014-04-01 13:17:36 【问题描述】:

我正在为 Maven Assembly 插件开发基于 groovy 的帮助程序,但我被权限管理困住了。我在 Windows 机器上创建程序集,这意味着原生 unix 风格的权限管理不可用。

是否可以使用 Groovy/Java 压缩某些文件,同时指定要分配给存档内文件的权限?

【问题讨论】:

可能相关:***.com/questions/10699334/… 【参考方案1】:

有一个方法:

.setUnixMode(int unixMode)

为后代提供完整的工作样本:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.apache.commons.compress.archivers.ArchiveException;
import org.apache.commons.compress.archivers.ArchiveOutputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.utils.IOUtils;

public class Archiver 
    public static void main(String[] args) throws ArchiveException, IOException 
        /* Create Output Stream that will have final zip files */
        OutputStream zip_output = new FileOutputStream(new File(
                "zip_output.zip"));

        /*
         * Create Archive Output Stream that attaches File Output Stream / and
         * specifies type of compression
         */
        ArchiveOutputStream logical_zip = new ArchiveStreamFactory()
                .createArchiveOutputStream(ArchiveStreamFactory.ZIP, zip_output);

        /* Create Archieve entry - write header information */
        ZipArchiveEntry e1 = new ZipArchiveEntry("z1/labrat-1.txt");
        e1.setUnixMode(0777);
        logical_zip.putArchiveEntry(e1);
        /* Copy input file */
        IOUtils.copy(new FileInputStream(new File("labrat-1.txt")), logical_zip);
        /* Close Archieve entry, write trailer information */
        logical_zip.closeArchiveEntry();
        /* Repeat steps for file - 2 */
        ZipArchiveEntry e2 = new ZipArchiveEntry("z2/labrat-2.txt");
        e2.setUnixMode(0777);
        logical_zip.putArchiveEntry(e2);
        IOUtils.copy(new FileInputStream(new File("labrat-2.txt")), logical_zip);
        logical_zip.closeArchiveEntry();

        /* Finish addition of entries to the file */
        logical_zip.finish();
        /* Close output stream, our files are zipped */
        zip_output.close();
    

【讨论】:

以上是关于Java/Groovy:ZIP 文件并为其分配权限的主要内容,如果未能解决你的问题,请参考以下文章

是否有一种编程方式可以在 Windows 中创建自定义网络配置文件并为其分配虚拟网络适配器?

在数据框中查找重叠范围并为其分配值

DB2: 为DB2数据库创建新用户帐户并为其分配特定特权

DB2: 为DB2数据库创建新用户帐户并为其分配特定特权

怎样为局域网用户分配共享权限并设置访问密码

SQL:合并表中列的相似值并为其分配标识符