2017-07-06 90 views
1

我在一個文件夾中有很多日誌,我想只抓取具有今天的日期的文件並將它們放在zip文件中。c#將Directory.GetFiles添加到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

+1

沒有我需要爲這個在'foreach'我得到的文件列表的情況發生,我現在需要我只是需要將它們添加到壓縮文件。 – Tony

+0

我認爲這是你想要的:https://stackoverflow.com/a/22339337/424129 - 看到評論以及 –

回答

3

那麼你可以做的就是創建一個臨時文件夾,然後添加每一個當前日期在它匹配的文件。一旦這樣做了,你可以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); 
0

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

ZipFile.CreateFromDirectory(myPath, zipPath); 
+0

這將抓住目錄中的所有文件,我只想具體的 – Tony

+0

可能你正在尋找:https://stackoverflow.com/questions/27550413/how-to-zip-selected-files-not-all-the-files-in-a-directory-in-c-sharp –

+0

這是一個不同的解決方案。我需要重新創建我的整個程序 – Tony

相關問題