DotNetZip创建了权限为000 (无读、无写、无执行)的压缩文件,因此我不能在Linux上轻松地打开它们(Windows资源管理器并不关心这一点,通常会打开文件)。Windows上的相同代码生成具有读取权限的文件(在Linux上):
using (var fs = new System.IO.FileStream("./test.zip"))
{
using (var archive = new System.IO.Compression.ZipArchive(fs, ZipArchiveMode.Create))
{
var entry = archive.CreateEntry("test.txt");
using (var writer = new System.IO.StreamWriter(entry.Open()))
{
writer.Write("Hello World");
}
}
}我可以设置权限或模拟System.IO.Compression在Windows上运行吗?
发布于 2020-06-10 05:39:19
.net核心现在公开ZipArchiveEntry的ExternalAttributes属性,该属性允许您设置权限,如下所示(664):
entry.ExternalAttributes = entry.ExternalAttributes | (Convert.ToInt32("664", 8) << 16);请注意,该字符串是权限位掩码的八进制表示,因此转换为基数8。
https://stackoverflow.com/questions/59307760
复制相似问题