- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[C#] Hướng dẫn giải nén file *.rar với tiến trình progress bar winform
Xin chào các bạn, bài viết hôm nay mình sẻ tiếp tục hướng dẫn các bạn cách giải nén file Winrar (*.rar) trên lập trình C#, Winform.
[C#] How to unrar in winform
WinRAR là một phần mềm nén và giải nén dữ liệu được sử dụng rộng rãi trên máy tính. Nó được phát triển bởi RARLAB và có sẵn trên nhiều nền tảng, bao gồm Windows, MacOS và Linux.
Một trong những ưu điểm của WinRAR là khả năng nén và giải nén tốt. Với khả năng nén dữ liệu lên đến 15% - 20% so với file gốc, WinRAR là một công cụ hữu ích để tiết kiệm không gian đĩa cứng. Ngoài ra, WinRAR cũng hỗ trợ các định dạng nén phổ biến như RAR, ZIP và 7Z, giúp người dùng có thể dễ dàng truy cập và tải xuống các file nén từ internet.
WinRAR còn có tính năng mã hóa dữ liệu giúp người dùng bảo vệ các file quan trọng. Nó cung cấp các tùy chọn để mã hóa và giải mã các file và thư mục theo nhiều cấp độ bảo mật khác nhau, từ mã hóa 128-bit đến 256-bit.
Tuy nhiên, WinRAR cũng có nhược điểm. Đầu tiên, đối với người dùng mới, giao diện của WinRAR có thể khó sử dụng và không thân thiện. Ngoài ra, WinRAR cũng có giá khá cao so với các phần mềm nén và giải nén miễn phí khác như 7-Zip hay PeaZip.
Tóm lại, WinRAR là một phần mềm nén và giải nén dữ liệu tốt và có nhiều tính năng hữu ích nhưng giá cả có thể là một rào cản đối với những người dùng mới và không thích hợp cho những người đang tìm kiếm một phần mềm miễn phí.
Video hướng dẫn từng bước viết ứng dụng giải nén C#:
Source code C#:
using SharpCompress.Archives;
using SharpCompress.Archives.Rar;
using SharpCompress.Common;
using System;
using System.Data;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DemoExtractFileWinRar
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnBrowseSource_Click(object sender, EventArgs e)
{
var dlg = new OpenFileDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
txtSource.Text = dlg.FileName;
}
}
private void btnBrowseDest_Click(object sender, EventArgs e)
{
var dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
txtDest.Text = dlg.SelectedPath;
}
}
int totalFile = 0;
int completed = 0;
public void DoExtractFile(IProgress<DataResponsed> progress)
{
using (var archive = RarArchive.Open(txtSource.Text))
{
totalFile = archive.Entries.Where(entry => !entry.IsDirectory).ToList().Count;
foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory))
{
entry.WriteToDirectory(txtDest.Text, new ExtractionOptions()
{
ExtractFullPath = true,
Overwrite = true,
});
Interlocked.Increment(ref completed);
var percentage = Convert.ToInt16(((double)completed / totalFile * 1.0) * 100d);
var data = new DataResponsed();
data.Percent = percentage;
data.FileName = entry.Key;
data.Size = entry.Size;
if (completed == totalFile)
{
data.isFinish = true;
}
progress.Report(data);
}
}
}
public class DataResponsed
{
public string FileName { get; set; }
public long Size { get; set; }
public int Percent { get; set; }
public bool isFinish { get; set; } = false;
}
private async void btnUnrar_Click(object sender, EventArgs e)
{
completed = 0;
richTextBox1.Text = "";
var progress = new Progress<DataResponsed>(data =>
{
progressBar.Value = data.Percent;
lblPercent.Text = $"{data.Percent}%";
richTextBox1.AppendText(data.FileName + $" - Size: {data.Size}\n");
richTextBox1.ScrollToCaret();
if (data.isFinish)
{
MessageBox.Show("Extract file finished......");
}
});
await Task.Run(() => DoExtractFile(progress));
}
}
}
Thanks for watching!