压缩文件不会出现在正确的位置

时间:2013-10-21 03:55:49

标签: c# zipfile

我是C#的新手,非常感谢你的帮助。

我有一个Windows控制台应用程序,可以通过电子邮件发送日志,并计划每小时运行一次。

我想要的是将这些日志(在通过电子邮件发送后)压缩到同一文件夹中。即。应用程序正在从中读取日志的文件夹。

到目前为止,这是我的代码。

string[] files = Directory.GetFiles(@"C:\Users\*\Documents\target", "*.txt");

try
{
    using (Ionic.Zip.ZipFile zip = new Ionic.Zip.ZipFile()) //i'm using dotnetzip lib
    {
        foreach (var file in files)
        {
            Console.WriteLine(file);
            sendEMail(file);

            zip.AddFile(file,"logs");
        }

        zip.Save("mailedFiles.zip");
    }
}

以上代码发生的事情是我能够创建一个zip文件但不能在应用程序读取的同一文件夹中。相反,它会在程序的位置创建zipfile(这很有意义)。

如何更改创建的zip文件的位置。此外,我希望将单个日志替换为创建的一个zip文件。

2 个答案:

答案 0 :(得分:3)

您可以将zip文件保存到用户文件夹中的任何特殊文件夹。您可以使用以下代码行获取特殊文件夹的路径:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);

如果您想保存除这些特殊文件夹以外的zip文件,则可能存在权限问题。

答案 1 :(得分:0)

尝试使用目录保存。

例如:

{
    string directory = @C:\Users*\Documents\
    zip.Save(directory + "mailedFiles.zip");
}

您还应该使用System.IO来获取目录而不是硬编码。