.NET MAUI 数据提取 SDK 和 IronZIP
.NET MAUI,或称.NET多平台应用程序UI,是用于构建跨平台应用程序的框架。 它允许开发人员使用单一代码库创建在Windows、macOS、iOS、Android及其他设备上运行的应用程序。 类似于React Native,但它使用C#而不是JavaScript。
.NET MAUI允许C#开发人员从单一环境无障碍地构建移动应用程序和桌面应用程序。 Microsoft .NET MAUI提供全面的文档和资源,帮助开发人员简化和优化应用程序开发过程。
在本文中,我们将探索集成 IronZIP 这一强大的 C# ZIP 归档库和 .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应用程序项目模板并点击下一步。

- 配置项目设置、项目名称和位置。


- 从附加信息中,选择合适的.NET框架。 IronZIP支持最新版本的.NET框架,所以您可以选择该框架。

- 点击创建,使用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><?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 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 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 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 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档案中提取文件。
这些技术的结合为开发人员提供了在各种平台上管理和操作档案的无缝体验。
有关更详细的信息和代码示例,请访问此文档页面。
常见问题解答
如何将 ZIP 库集成到 .NET MAUI 项目中?
要将类似 IronZIP 的 ZIP 库集成到 .NET MAUI 项目中,需在 Visual Studio 中创建新 .NET MAUI 项目,通过 NuGet 安装 IronZIP 库,并使用提供的代码示例实现 ZIP 存档功能。
在 .NET MAUI 应用中使用 ZIP 库的好处是什么?
在 .NET MAUI 应用程序中使用像 IronZIP 这样的 ZIP 库可以实现高效的数据压缩和提取,支持多种存档格式,并且兼容各种平台和 .NET 版本。
我可以在跨平台应用中使用 ZIP 库吗?
可以,您可以在跨平台应用中使用 IronZIP。它支持在 Windows、Linux、Mac、iOS 和 Android 上的 C#、F# 和 VB.NET 应用。
如何在 .NET MAUI 应用中创建 ZIP 文件?
在 .NET MAUI 应用程序中,您可以使用 IronZIP 库创建 ZIP 文件。实现 OnSelectFilesButtonClicked 方法以允许文件选择,并使用 IronArchive 类和 CreateZip 方法将文件添加到 ZIP 存档中。
如何在 .NET MAUI 项目中从 ZIP 存档中提取文件?
要在 .NET MAUI 项目中从 ZIP 存档中提取文件,可以使用 IronZIP 的 ExtractArchiveToDirectory 方法。首先,实现 OnSelectFileButtonClicked 方法选择 ZIP 文件,然后将其内容提取到指定目录。
IronZIP 支持哪些存档格式?
IronZIP 支持多种存档格式,包括 ZIP、TAR、GZIP 和 BZIP2,使其成为处理不同类型压缩文件的多功能选择。
IronZIP 兼容不同的 .NET 版本吗?
是的,IronZIP 与多个 .NET 版本兼容,如 .NET 7、6、5、Core、Standard 和 Framework,为开发人员在不同 .NET 环境中提供灵活性。
在 .NET MAUI 中实现 ZIP 库的先决条件是什么?
要在 .NET MAUI 中实现类似 IronZIP 的 ZIP 库,确保已安装包含 .NET MAUI 工作负载的 Visual Studio,并通过 NuGet 将 IronZIP 库添加到项目中。
如何通过 ZIP 功能增强 .NET MAUI 应用?
通过集成 IronZIP 来增强 .NET MAUI 应用,以管理 ZIP 文件的创建和提取,为用户提供强大的数据压缩和解压功能。
在哪里可以找到更多关于在 .NET MAUI 中使用 ZIP 库的信息?
有关更详细的信息和代码示例,您可以访问 IronZIP 文档页面,那里提供了关于在 .NET MAUI 项目中集成和使用 ZIP 功能的全面指南。








