在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
.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# Zip 庫
設計數據提取應用程式介面
實作建立 Zip 和解壓縮 Zip 方法
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,然後點擊「建立新專案」。
選擇 .NET MAUI App 專案模板,然後點擊「下一步」。
配置專案設定、專案名稱和位置。 點擊下一步。
從其他資訊中,選擇正確的 .NET Framework。 IronZIP 支援最新版本的 .NET Framework,因此您可以選擇該版本。
要將IronZIP整合到您的.NET MAUI專案中,請按以下步驟操作:
從檢視中打開解決方案總管。
在方案總管中右鍵點擊您的項目。
選擇「管理方案的 NuGet 套件」。
在 NuGet 瀏覽選項卡中,搜索 "IronZIP" 並為您的項目安裝該套件。
在「預覽變更」對話框中,點選「套用」來進行變更,然後點選「接受」以接受 IronZIP 授權。
NuGet 會完成安裝並顯示確認訊息。
好了,所有內容都已安裝和設定完畢,我們現在轉到在 .NET MAUI 中建立 Zip 提取器的資料提取任務。
在本節中,我們將專注於設計您的 .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 並選擇任何類型的多個檔案以創建壓縮檔案。
然後,創建所選文件的所有路徑列表。 最後,將其傳遞給 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 類會接收要建立的 zip 檔案名稱路徑。 通過循環遍歷每個選定的文件路徑,使用 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 方法,傳遞選定的檔案路徑和輸出路徑。 此方法可將壓縮檔中的所有文件無縫轉換並傳輸到輸出資料夾。 最後,提取成功後將顯示確認消息。
代碼如下:
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 結合使用,為跨平台應用程式中的創建、讀取和解壓縮壓縮檔提供了一個強大的解決方案。
所提供的示例展示了如何使用IronZIP在.NET MAUI中選擇多個文件、生成zip壓縮包以及從zip壓縮包中提取文件。
這些技術的組合為開發人員提供了跨各種平台管理和操作檔案的無縫體驗。
如需更詳細的資訊和程式碼範例,請造訪此頁面文檔頁面。