如何修改zip文件中的文件属性?

时间:2015-02-18 15:29:25

标签: c# windows sharpziplib file-attributes

使用SharpZipLib,我将文件添加到现有的zip文件中:

        using (ZipFile zf = new ZipFile(zipFile)) {
            zf.BeginUpdate();
            foreach (FileInfo fileInfo in fileInfos) {
                string name = fileInfo.FullName.Substring(rootDirectory.Length);
                FileAttributes attributes = fileInfo.Attributes;
                if (clearArchiveAttribute) attributes &= ~FileAttributes.Archive;

                zf.Add(fileInfo.FullName, name);
//TODO: Modify file attribute?
            }
            zf.CommitUpdate();
            zf.Close();
        }

现在的任务是清除Archive文件属性 但不幸的是,我发现这只有在使用ZipOutputStream创建新的zip文件并设置ExternalFileAttributes时才有可能:

            // ...
            ZipEntry entry = new ZipEntry(name);
            entry.ExternalFileAttributes = (int)attributes;
            // ...

有没有办法添加文件修改文件属性?

这可以用DotNetZip吗?

1 个答案:

答案 0 :(得分:0)

由于SharpZipLib的源代码可用,我自己添加了ZipFile.Add的另一个重载:

    public void Add(string fileName, string entryName, int attributes) {
        if (fileName == null) {
            throw new ArgumentNullException("fileName");
        }

        if (entryName == null) {
            throw new ArgumentNullException("entryName");
        }

        CheckUpdating();
        ZipEntry entry = EntryFactory.MakeFileEntry(entryName);
        entry.ExternalFileAttributes = attributes;
        AddUpdate(new ZipUpdate(fileName, entry));
    }

效果很好......