Soran
c# Tek Tek dosya sıkıştırmak

Genel Tartışma
-
Merhaba arkadaşlar
yedekleme programım için yedekleme yapmaya çalışıyorum. sorun yok yapıyor aşağıdaki kodla ama ben şu şekilde klasör içindeki dosyaları tek tek nasıl sıkıştırabilirim.
mesala ;
klasör A / içiden
A.XLS
B.XLS
C.XLS
D.XLS
bunları ;
A.rar
B.rar
C.rar
D.rar
try { using (var zip = new ZipFile()) { zip.AddFiles(Directory.GetFiles(textBox4.Text), "packed"); zip.Save(textBox5.Text + DateTime.Now.ToString("dd MMMM yyyy dddd") + ".zip"); } MessageBox.Show("Dosya Sıkıştırıldı..........."); } catch (Exception ex) { MessageBox.Show(ex.Message + " " + ex.InnerException); }
- Değiştirilmiş Tür Kyamuran SalibryamMicrosoft contingent staff, Moderator 22 Ekim 2018 Pazartesi 10:22
Tüm Yanıtlar
-
Bu işi Windows'un Shell32 kitaplığına yaptırabilirsiniz.
private void CreateZipFile(string Fullpath) { using (FileStream fs = File.Create(Fullpath)) { byte[] emptyzip = new byte[] { 80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; fs.Write(emptyzip, 0, emptyzip.Length); fs.Flush(); fs.Close(); } } private void Zip(string folder, string zipFolder) { if (!Directory.Exists(zipFolder)) Directory.CreateDirectory(zipFolder); string zipPath; Shell shell = new Shell(); shell.NameSpace(folder).Items().Cast<FolderItem>().Where(fi => !fi.IsFolder).ToList().ForEach(fi => { zipPath = Path.Combine(zipFolder, $"{fi.Name}_{DateTime.Now:yyyyMMdd_HHmmss}.zip"); CreateZipFile(zipPath); shell.NameSpace(zipPath).CopyHere(fi); Thread.Sleep(1000); }); } private void button1_Click(object sender, EventArgs e) { Zip("D:\\Dosyalarim", "D:\\Yedek"); }
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...
-
-
-
CopyHere metodunun ikinci bir parametre alan bir yapısı daha var. Dialog pencerelerini engellemek için 4 degerini vermeniz yeterli. Yani,
shell.NameSpace(zipPath).CopyHere(fi);
yerine,
shell.NameSpace(zipPath).CopyHere(fi, 4);
yazmanız yeterli.
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...