- [C#] Di chuyển và thay đổi kích thước Control Winform khi ứng dụng đang chạy
- [VB.NET] Chia sẻ source tạo sắp xếp đội hình bóng đá Line-ups đội bóng
- [C#] Hướng dẫn chỉnh sửa Text của label trực tiếp trên winform
- [C#] Hướng dẫn custom TextBox giống Ultraviewer trên Winform
- [C#] Show Modal Winform like Bootstrap
- [DATABASE] Thứ tự thực hiện mệnh đề truy vấn SELECT trong Sqlserver
- [C#] Hướng dẫn viết addin Excel Lấy hình ảnh từ URL internet vào Excel
- [DATABASE] TSQL view max length all column data trên table Sqlserver
- [DEVEXPRESS] Hướng dẫn sử dụng MailMerge kèm Hình ảnh trên Winform
- [DATABASE] Hướng dẫn truy vấn xem kích thước lưu trữ của từng bảng ghi Table trên sqlserver
- [C#] Hướng dẫn Fake Date Time sử dụng thư viện Harmony
- [DATABASE] Phân biệt câu lệnh DDL và DML trong sqlserver
- [C#] Hướng dẫn convert file mã HTML sang file Pdf trên winform
- [DEVEXPRESS] Tạo các loại mã vạch Barcode trực tiếp trên Devexpress Barcode API
- [DEVEXPRESS] Hướng dẫn custom Simple button thành Progressbar
- [DATABASE] Tách số và chữ từ chuỗi - hàm tối ưu hóa tách số và chữ trong Sqlserver
- [C#] Tìm kiếm gần đúng Full Text Search sử dụng thư viện Lucene.NET
- [C#] Chia sẻ tài liệu, sdk và source code máy chấm công dòng máy ZKTeco
- [C#] Memory Cache là gì, và sử dụng trong ứng dụng Winform
- [DATABASE] Khóa chính Primary Key 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!