2014-03-12 41 views
1

我有很多文件在目錄中具有相同的名稱。我想壓縮(zip等)MyDirectory中最後一個修改過的文件。你能幫我嗎?如何壓縮最後修改的文件在C#

我可以壓縮文件,但不是最後修改的文件:

private void button1_Click(object sender, EventArgs e) 
{ 
    FileStream sourceFile = File.OpenRead(@"C:\MyDirectory"); 
    FileStream destFile = File.Create(@"C:\MyDirectory.zip"); 
    GZipStream compStream = new GZipStream(destFile, CompressionMode.Compress); 
    try 
    { 
     int theByte = sourceFile.ReadByte(); 
     while (theByte != -1) 
     { 
      compStream.WriteByte((byte)theByte); 
      theByte = sourceFile.ReadByte(); 
     } 
    } 
    finally 
    { 
     compStream.Dispose(); 
    } 
    MessageBox.Show("file is compressed successfully"); 
} 
+0

如果你有.NET 4.5,你可以使用'System.IO.Compression .ZipFile'類。 –

+1

你正在運行什麼操作系統?最後我檢查了Windows在給定的目錄中需要唯一的文件名。注意:'new FileInfo(「foo.txt」)。LastWriteTime'會爲您提供上次修改時間。 – 2014-03-12 19:59:13

+0

如果你使用的是4.5,你可以使用一個很好的庫用於壓縮部分:[System.IO.Compression](http://msdn.microsoft.com/en-us/library/system.io.compression.zipfile (v = vs.110).aspx) –

回答

1

要獲得最後修改的文件:

string lastModified = Directory.EnumerateFiles(path) 
           .OrderBy(f => File.GetLastWriteTime(f)) 
           .Last(); 
+0

以及如何使用lastmodified來壓縮它? – user2777109

+0

'lastModified'將包含最近修改的文件的名稱 - 然後可以打開文件並壓縮內容。 – davisoa

+0

@ user2777109:這是一個文件路徑。您可以使用上面自己的代碼:讀取文件內容,將其寫回壓縮。 – abatishchev