- [TOOL] Chia sẻ phần mềm thay đổi thông tin cấu hình máy tính
- [C#] Hướng dẫn Export dữ liệu ra file Microsoft Word Template
- [C#] Chia sẻ source code tool kiểm tra domain website
- [C#] Hướng dẫn tạo file PDF sử dụng thư viện QuestPDF
- [C#] Hướng dẫn tạo ứng dụng dock windows giống Taskbar
- [C#] Chia sẻ source code sử dụng Object Listview trên Winform
- [VB.NET] Chia sẻ source code quản lý thu chi mô hình 3 lớp Winform
- [DATABASE] Xóa lịch sử danh sách đăng nhập tài khoản trên SMSS Sqlserver Management Studio
- [C#] Sử dụng FolderBrowserDialog Vista trên Winform
- [DEVEXPRESS] Chia sẻ tool Winform UI Templates Early Access Preview (EAP)
- [C#] Chia sẻ source code Spin Content (Trộn nội dung văn bản theo từ đồng nghĩa) trên Winform
- [VB.NET] Chia sẻ source code lịch âm dương và hẹn lịch nhắc việc
- [C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)
- [VB.NET] Hướng dẫn giải captcha sử dụng dịch vụ AZCaptcha API trên winform
- [C#] Hướng dẫn chứng thực đăng nhập ứng dụng bằng vân tay (Finger Print) trên máy tính
- [C#] Color Thief cách xuất màu sắc thiết kế từ hình ảnh
- [C#] Cách tạo bản quyền và cho phép dùng thử ứng dụng Winform
- [C#] Hướng dẫn sử dụng trình duyệt web Chrome convert HTML sang tập tin file PDF
- [C#] Kết nôi điện thoại Android, IOS với App Winform via Bluetooth
- [DATABASE] Cách query cộng trừ dồn dần trong Sqlserver
[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!