
.NET MAUI 資料提取 SDK 與 IronZIP
.NET MAUI,或稱.NET跨平台應用程式UI,是用於構建跨平台應用程式的框架。 它允許開發者使用單一程式碼庫建立能在Windows、macOS、iOS、Android及其他裝置上運行的應用程式。 類似於React Native,但它使用C#而非JavaScript。
.NET MAUI允許C#開發者從單一環境中輕鬆構建移動應用和桌面應用。 Microsoft .NET MAUI提供全面的文件和資源,以幫助開發者簡化和優化應用程式開發過程。
在本文中,我們將探討將強大的C# ZIP壓縮檔案庫IronZIP與.NET MAUI整合以達到資料提取目的。
如何從 ZIP 壓縮檔中提取資料
- 建立一個Visual Studio .NET MAUI專案
- 使用NuGet安裝C# Zip程式庫
- 設計資料提取應用程式介面
- 實現建立Zip和提取Zip方法
- 運行應用程式並驗證結果
IronZIP簡介
IronZIP 是一個全面的C# ZIP壓縮檔案庫,專為在.NET中建立、讀取和提取檔案而設計。 它支持多種壓縮檔案格式,包括ZIP、TAR、GZIP和BZIP2。IronZIP與各種.NET版本相容,如.NET 7、6、5、Core、Standard和Framework。
它是跨平台的,使其適合用於Windows、Linux、Mac、iOS、Android、Docker、Azure和AWS上運行的C#、F#和VB.NET應用程式。
IronZIP的主要功能包括:
- 各種操作系統的跨平台支援。
- 與不同.NET版本和專案型別相容。
- 支援建立、讀取和提取ZIP、TAR、GZIP和BZIP2檔案。
- 與.NET MAUI整合,用於構建多平台應用程式。
先決條件
在開始之前,請確保您具備以下必要條件:
- 已安裝.NET MAUI工作負載的Visual Studio。
- 已將IronZIP程式庫新增到您的.NET MAUI專案中。
在Visual Studio中建立.NET MAUI應用程式的步驟
-
打開Visual Studio並點擊"建立一個新專案"。
-
選擇.NET MAUI App專案模板並點擊下一步。

-
配置專案設定、專案名稱和位置。 點擊下一步。

-
從附加資訊中選擇正確的.NET Framework版本。 IronZIP支持最新版本的.NET Framework,因此您可以選擇該版本。

-
點擊建立,以使用IronZIP程式庫建立用於Zip資料提取的.NET MAUI應用程式。
安裝IronZIP
要將IronZIP整合到您的.NET MAUI專案中,請按照以下步驟:
-
從視圖中打開方案總管。

-
在方案總管中右鍵單擊您的專案。
-
選擇"為方案管理NuGet套件"。

-
在NuGet瀏覽選項卡中,搜尋"IronZIP"並為您的專案安裝此套件。

-
在預覽更改對話框中,點擊"應用"以進行更改,然後點擊"接受"以接受IronZIP授權。
-
NuGet將完成安裝並出現確認消息。
現在,對所有已安裝和設置完成,我們來進行.NET MAUI中建立ZIP提取器的資料提取任務。
建立ZIP提取器的步驟
步驟1:設計應用程式介面
在本節中,我們將專注於為您的.NET MAUI應用程式設計使用者介面。 打開專案資料夾中的MainPage.xaml文件,並新增必要的XAML程式碼以建立易於使用的介面。
這裡,我們需要兩個按鈕,一個用於建立zip文件,另一個用於提取zip文件。 還需要一些標籤以提供適當的消息。 以下程式碼範例顯示了設計的XAML程式碼:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiAppDataExtraction.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Label
Text="IronZIP - A Zip Library to Create and Extract Zip Content!"
SemanticProperties.HeadingLevel="Level1"
FontSize="32"
HorizontalOptions="Center" />
<Label
Text="Welcome to .NET Multi-platform App UI"
SemanticProperties.HeadingLevel="Level2"
SemanticProperties.Description="Welcome to dot net Multi platform App U I"
FontSize="18"
HorizontalOptions="Center" />
<Button
x:Name="OpenFileBtn"
Text="Extract Zip File"
SemanticProperties.Hint="Opens the File Picker"
Clicked="OnSelectFileButtonClicked"
HorizontalOptions="Center" />
<Button
x:Name="OpenFilesBtn"
Text="Create Zip"
SemanticProperties.Hint="Opens the File Picker"
Clicked="OnSelectFilesButtonClicked"
HorizontalOptions="Center" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
運行應用程式,您將看到螢幕上的常規Windows表單輸出。

步驟2:實現程式碼
1. 建立Zip
打開MainPage.xaml.cs文件,建立"建立Zip"功能。 實現OnSelectFilesButtonClicked方法,允許打開FilePicker並選擇任意型別的多個文件以建立zip文件。
然後,建立選中文件所有路徑的列表。 最後,將其傳遞給CreateZip方法,其中IronZIP將使用所有文件路徑在一秒鐘內無縫建立zip文件。
以下程式碼範例顯示了如何完成此任務。
private async void OnSelectFilesButtonClicked(object sender, EventArgs e)
{
try
{
var status = await Permissions.RequestAsync<Permissions.StorageRead>();
if (status != PermissionStatus.Granted)
{
await DisplayAlert("Alert!", "Storage Access Denied", "Ok");
return;
}
// Select multiple files of any type
var results = await FilePicker.PickMultipleAsync();
if (results != null)
{
var selectedFilePaths = new List<string>();
foreach (var file in results)
{
// Add file full path to the list one by one
selectedFilePaths.Add(file.FullPath);
}
CreateZip(selectedFilePaths);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}Private Async Sub OnSelectFilesButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim status = Await Permissions.RequestAsync(Of Permissions.StorageRead)()
If status <> PermissionStatus.Granted Then
Await DisplayAlert("Alert!", "Storage Access Denied", "Ok")
Return
End If
' Select multiple files of any type
Dim results = Await FilePicker.PickMultipleAsync()
If results IsNot Nothing Then
Dim selectedFilePaths = New List(Of String)()
For Each file In results
' Add file full path to the list one by one
selectedFilePaths.Add(file.FullPath)
Next file
CreateZip(selectedFilePaths)
End If
Catch ex As Exception
Console.WriteLine($"Error: {ex.Message}")
End Try
End Sub接下來,實現CreateZip方法。 IronZIP的IronArchive類接受要建立zip文件的路徑。 迴圈遍歷每個選中文件路徑,然後通過Add方法將它們新增到zip文件中。
當文件新增完畢,將使用DisplayAlert顯示確認消息。
private async void CreateZip(List<string> selectedFilePaths)
{
var path = "E:\\output.zip";
// Create a Zip
using (var archive = new IronArchive(path))
{
// Add files to the ZIP
foreach (var file in selectedFilePaths)
{
archive.Add(file);
}
}
await DisplayAlert("Congratulations", "All files added to " + path, "Ok");
}Private Async Sub CreateZip(ByVal selectedFilePaths As List(Of String))
Dim path = "E:\output.zip"
' Create a Zip
Using archive = New IronArchive(path)
' Add files to the ZIP
For Each file In selectedFilePaths
archive.Add(file)
Next file
End Using
Await DisplayAlert("Congratulations", "All files added to " & path, "Ok")
End Sub如需有關如何建立、新增文件到現有zip和提取zip的更多詳細資訊,請存取此教程頁面。
2. 提取Zip
現在,我們將建立"提取Zip"功能。 再次在MainPage.xaml.cs文件中,實現OnSelectFileButtonClicked方法,以允許打開FilePicker並選擇一個單一的zip文件進行提取。
選擇文件的完整路徑將設置為一個字串變數,並傳送到ExtractZip方法中,IronZIP會進行提取。 程式碼如下所示:
private async void OnSelectFileButtonClicked(object sender, EventArgs e)
{
try
{
var status = await Permissions.RequestAsync<Permissions.StorageRead>();
if (status != PermissionStatus.Granted)
{
await DisplayAlert("Alert!", "Storage Access Denied", "Ok");
return;
}
// Select a single file of any type
var result = await FilePicker.PickAsync();
if (result != null)
{
// Add File Full Path to the list one by one
var selectedFile = result.FullPath;
ExtractZip(selectedFile);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}Private Async Sub OnSelectFileButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim status = Await Permissions.RequestAsync(Of Permissions.StorageRead)()
If status <> PermissionStatus.Granted Then
Await DisplayAlert("Alert!", "Storage Access Denied", "Ok")
Return
End If
' Select a single file of any type
Dim result = Await FilePicker.PickAsync()
If result IsNot Nothing Then
' Add File Full Path to the list one by one
Dim selectedFile = result.FullPath
ExtractZip(selectedFile)
End If
Catch ex As Exception
Console.WriteLine($"Error: {ex.Message}")
End Try
End Sub接下來,建立ExtractZip方法。 在此方法中,設置想要提取文件的輸出文件夾的路徑。
使用IronZIP的ExtractArchiveToDirectory方法,傳遞選擇的文件路徑和輸出路徑。 此方法無縫轉換並傳輸zip中的所有文件到輸出文件夾。 最後,成功提取後會顯示確認消息。
程式碼如下所示:
private async void ExtractZip(string selectedFilePath)
{
var path = "E:\\Extracted Files";
IronArchive.ExtractArchiveToDirectory(selectedFilePath, path);
await DisplayAlert("Congratulations", "All files extracted to " + path, "Ok");
}Private Async Sub ExtractZip(ByVal selectedFilePath As String)
Dim path = "E:\Extracted Files"
IronArchive.ExtractArchiveToDirectory(selectedFilePath, path)
Await DisplayAlert("Congratulations", "All files extracted to " & path, "Ok")
End Sub步驟3:運行應用程式
成功整合程式碼和IronZIP後,構建並運行應用程式以執行資料提取任務。 通過建立zip文件和從zip文件中提取文件來測試功能。
通過檢查指定目錄中的輸出和提取的文件驗證結果。
步驟4:驗證結果
1. 測試建立Zip
讓我們先嘗試建立一個zip文件。點擊建立Zip按鈕,它將顯示文件對話框。 您可以選擇多個或單個文件加入zip中。

點擊打開,確認消息會顯示文件已成功新增到output.zip。

如果我們導航到output.zip文件並查看其內容,我們將看到所有新增的文件。

2. 測試提取Zip
現在讓我們提取一個zip文件。點擊提取Zip按鈕,會出現文件對話框。 選擇您想要提取的zip文件並點擊打開。

一旦從zip文件中完成資料捕獲並提取到想要的文件夾,它會顯示確認消息。

現在,導航到"提取的文件"文件夾,您將看到從我們選擇的zip中提取的文件。

結論
總之,將IronZIP與.NET MAUI整合提供了一個強大的方案,便於在跨平台應用中建立、讀取和提取壓縮文件。
提供的範例演示了如何在.NET MAUI中使用IronZIP選擇多個文件、生成zip檔案和從zip檔案提取文件。
這些技術的組合為開發者提供了無縫的體驗,方便在不同的平臺上管理和處理壓縮檔案。
如需更多詳細資訊和程式碼範例,請存取此文件頁面。

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
相關文章


