c# - ناجحة - كشف كلمة السر للملفات المضغوطة بطريقة بسيطة و بدون برامج(winrar password)




ضغط/إلغاء ضغط الملفات والمجلدات (6)

إجابتي ستكون تغمض عينيك وتختار DotNetZip . لقد تم اختباره من قبل مجتمع كبير.

هل يعرف أي شخص طريقة جيدة لضغط أو إلغاء ضغط الملفات والمجلدات في C # بسرعة؟ قد تكون معالجة الملفات الكبيرة ضرورية.




هذا سهل جدًا في java ، وكما ذكر أعلاه ، يمكنك الوصول إلى مكتبات java.util.zip من C #. للاطلاع على المراجع ، انظر:

java.util.zip javadocs
عينة من الرموز

لقد استخدمت هذا منذ فترة من الوقت للقيام بتنسيق عمومي (عودي) لهيكل مجلد ، لكنني لا أعتقد أنني استخدمت الضغط من أي وقت مضى. إذا كنت متحمسًا جدًا ، فقد أسحب هذا الرمز وأعدله إلى هنا لاحقًا.


يمكنك إنشاء ملف مضغوط باستخدام هذه الطريقة:

public async Task<string> CreateZipFile(string sourceDirectoryPath, string name)
    {
        var path = HostingEnvironment.MapPath(TempPath) + name;
        await Task.Run(() =>
        {
            if (File.Exists(path)) File.Delete(path);
            ZipFile.CreateFromDirectory(sourceDirectoryPath, path);
        });
        return path;
    }

ثم يمكنك فك ضغط ملف zip باستخدام هذه الطرق:
1- تعمل هذه الطريقة مع مسار ملف zip

public async Task ExtractZipFile(string filePath, string destinationDirectoryName)
    {
        await Task.Run(() =>
        {
            var archive = ZipFile.Open(filePath, ZipArchiveMode.Read);
            foreach (var entry in archive.Entries)
            {
                entry.ExtractToFile(Path.Combine(destinationDirectoryName, entry.FullName), true);
            }
            archive.Dispose();
        });
    }

2- هذه الطريقة تعمل مع دفق ملف zip

public async Task ExtractZipFile(Stream zipFile, string destinationDirectoryName)
    {
        string filePath = HostingEnvironment.MapPath(TempPath) + Utility.GetRandomNumber(1, int.MaxValue);
        using (FileStream output = new FileStream(filePath, FileMode.Create))
        {
            await zipFile.CopyToAsync(output);
        }
        await Task.Run(() => ZipFile.ExtractToDirectory(filePath, destinationDirectoryName));
        await Task.Run(() => File.Delete(filePath));
    }





compression