- [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
- [SOFTWARE] Giới thiệu bộ phần mềm tính Kết Cấu Thép HatteSale, Mộng Đơn, Dầm, Sàn, Móng Cọc, Vách, Xà Gồ, Tính Tải Trọng
- [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
- Hướng dẫn khóa file bằng nhiều process id, không cho xóa tập tin
- Hướng dẫn cách tạo Product Id cho ứng dụng phần mềm XXXXX-XXXXX-XXXXX-XXXXX
- [SQLSERVER] Hướng dẫn tạo script sql từ ứng dụng Sqlserver management Studio
- [C#] Hướng dẫn sử dụng thư viện AutoITx lấy id và password Ultraviewer trên winform
- [VB.NET] Hướng dẫn lấy thông tin tài khoản đăng nhập windows và khởi động lại ứng dụng ở chế độ Administrator
- [C#] Sử dụng thư viện Polly gửi lại request api khi request bị lỗi hay rớt mạng
- [DEVEXPRESS] Chia sẻ source code tạo báo cáo report in tem nhãn label trên C# winform
- [DEVEXPRESS] Hướng dẫn vẽ biểu đồ Bar Chart trên Winform
- [C#] Tạo form đăng nhập và đăng ký với hiệu ứng Sliding Animation Effect
- [C#] Hướng dẫn tạo thanh toán đơn hàng qua mã vạch VietQR sử dụng API PayOS hoàn toàn miễn phí
- [C#] Hướng dẫn ghi log ra RichTextBox giống Console trên Winform sử dụng thư viện Serilog
- [C#] Hướng dẫn cách tạo mã QR Code trên file Excel
[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!