在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
.NET MAUI,全名為.NET Multi-platform App UI,是一個用於構建跨平台應用程式的框架。它允許開發人員使用一個代碼庫創建可以在Windows、macOS、iOS、Android等設備上運行的應用程式。類似於React Native,但使用C#而非JavaScript。
.NET MAUI允許C#開發人員在一個環境中輕鬆構建移動應用程式和桌面應用程式。Microsoft .NET MAUI提供了完整的文件和資源,幫助開發人員簡化和優化應用程式的開發過程。
在這篇文章中,我們將探索如何將IronZIP,一個強大的C# ZIP壓縮庫,與.NET MAUI進行整合以實現數據提取目的。
建立 Visual Studio .NET MAUI 專案
使用 NuGet 安裝 C# 壓縮檔案庫
設計數據提取應用程式介面
實作建立壓縮檔和提取壓縮檔的方法
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 的主要功能包括:
在開始之前,請確保您具備以下先決條件:
Visual Studio 安裝 .NET MAUI 工作負載。
打開 Visual Studio 並點擊 "Create a New project"。
選擇 .NET MAUI App 專案範本,然後點擊 "Next"。
配置項目設定、項目名稱及位置。點擊下一步。
從附加資訊中選擇合適的 .NET Framework。IronZIP 支援最新版本的 .NET Framework,您可以選擇這個版本。
要將 IronZIP 整合到您的 .NET MAUI 專案中,請按照以下步驟操作:
從“視圖”中打開“方案總管”。
在方案總管中右鍵點擊您的專案。
選擇「管理方案的 NuGet 套件」。
在 NuGet 瀏覽標籤中,搜尋 "IronZIP" 並為您的專案安裝套件。
在預覽變更對話框中,點擊 "Apply" 進行變更,然後點擊 "Accept" 以接受 IronZIP 許可證。
現在,一切都已安裝和設置好,我們來進行建立 Zip 提取器在 .NET MAUI 的數據擷取任務。
在此部分,我們將專注於設計您的 .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 表單呈現的輸出。
打開 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 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 類別會接收要創建的壓縮檔案名路徑。遍歷每個選定的檔案路徑,它們將通過 Add 方法被添加到壓縮檔案中。
文件添加後,將使用 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 add to the " + path, "Ok");
}
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 add to the " + path, "Ok");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
如需有關如何創建、向現有壓縮文件添加文件以及解壓縮文件的更多詳細信息,請訪問此 教程頁面.
現在,我們將創建“解壓縮 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 Multiple files 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 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 Multiple files 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 Multiple files 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 the " + path, "Ok");
}
private async void ExtractZip(string selectedFilePath)
{
var path = "E:\\Extracted Files";
IronArchive.ExtractArchiveToDirectory(selectedFilePath, path);
await DisplayAlert("Congratulations", "All files extracted to the " + 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 the " & path, "Ok")
End Sub
成功集成代碼和IronZIP後,構建並運行應用程式以執行數據提取任務。通過創建ZIP文件並從ZIP文件中提取文件來測試功能。
通過檢查指定目錄中的輸出和提取的文件來驗證結果。
首先嘗試建立一個壓縮檔。點擊“建立壓縮檔”按鈕,將會彈出一個文件對話框。您可以選擇多個或單個文件添加到壓縮檔中。
點擊開啟,然後會出現一條確認訊息,表示檔案已成功添加到output.zip。
如果我們導航到 output.zip 文件並查看其內容,我們會看到我們添加的所有文件。
現在我們來提取一個Zip檔案。點擊提取Zip按鈕,會出現一個文件對話框。選擇你想要提取的Zip檔案並點擊打開。
一旦資料從 zip 檔案中擷取完成並解壓縮到所需的資料夾,就會顯示確認訊息。
現在,導覽至「已提取文件」資料夾,您會看到我們選擇的壓縮檔中提取的文件。
總結來說,將 IronZIP 結合 .NET MAUI 提供了在跨平台應用程式中創建、讀取和解壓縮檔案的強大解決方案。
提供的範例展示了如何在 .NET MAUI 中使用 IronZIP 選擇多個檔案、生成 zip 壓縮檔以及從 zip 壓縮檔中提取檔案。
這種技術組合為開發者在各種平台上管理和操作檔案提供了無縫的體驗。
欲了解更多詳細信息和程式碼範例,請訪問此 文檔 頁面。