c# 将 Directory.GetFiles 添加到 Zip 文件

Posted

技术标签:

【中文标题】c# 将 Directory.GetFiles 添加到 Zip 文件【英文标题】:c# Adding Directory.GetFiles to Zip File 【发布时间】:2017-07-06 18:14:29 【问题描述】:

我在一个文件夹中有很多日志,我想只抓取具有今天日期的文件并将它们放入 zip 文件中。

这是我的代码:

static void Main(string[] args)

    //Specify todays date
    DateTime todaysDate = DateTime.Today;

    //Create a zip file with the name logs + todays date
    string zipPath = @"C:\Users\Desktop\ZIP\logs" + todaysDate.ToString("yyyyMMdd") + ".zip";
    string myPath = @"C:\Users\Desktop\LOG SEARCH";

    var files = System.IO.Directory.GetFiles(myPath, "*" + todaysDate.ToString("yyyyMMdd") + "*");

    foreach (var file in files)
    
        Console.WriteLine(file);
    

如何压缩files

【问题讨论】:

不,我需要在foreach 中发生这种情况,我正在获取文件列表,我现在需要将它们添加到 zip 文件中。 我认为这就是你想要的:***.com/a/22339337/424129 -- 也可以查看 cmets 【参考方案1】:

因此,您可以创建一个临时文件夹,然后在其中添加与当前日期匹配的每个文件。完成后您可以ZipFile.CreateFromDirectory 然后删除临时文件夹

DateTime todaysDate = DateTime.Today;

//Create a zip file with the name logs + todays date
string zipPath = @"C:\Users\Desktop\ZIP\logs" + todaysDate.ToString("yyyyMMdd") + ".zip";
string myPath = @"C:\Users\Desktop\LOG SEARCH";

string tempPath = @"C:\Users\Desktop\ZIP\logs" + todaysDate.ToString("yyyyMMdd");

var files = System.IO.Directory.GetFiles(myPath, "*" + todaysDate.ToString("yyyyMMdd") + "*");

Directory.CreateDirectory(tempPath);

foreach (var file in files)

    File.Copy(file, tempPath + @"\" + System.IO.Path.GetFileName(file));


ZipFile.CreateFromDirectory(tempPath, zipPath);

Directory.Delete(tempPath, true);

【讨论】:

【参考方案2】:

您需要使用 System.IO.Compression; 并使用

 ZipFile.CreateFromDirectory(myPath, zipPath);

【讨论】:

这将抓取目录中的所有文件,我只想要特定的 您可能正在寻找:***.com/questions/27550413/… 这是一个不同的解决方案。我需要重新创建我的整个程序

以上是关于c# 将 Directory.GetFiles 添加到 Zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

C# Directory.GetFiles()获取文件时如果是根目录时有隐藏文件则报错的处理

C#控制台 directory.getfiles 找到指定路径下的指定类型文件

Directory.GetFiles:如何只获取文件名,而不是完整路径? [复制]

C#遍历指定文件夹中所有文件的3种方法

Directory.EnumerateFiles 与 Directory.GetFiles 有啥区别?

Directory.GetFiles 有效,Directory.GetDirectories 不在同一目录中