2014-03-12 4 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' получит последнее измененное время. –

+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

 Смежные вопросы

  • Нет связанных вопросов^_^