在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
.NET MAUI 或 .NET Multi-platform App UI 是用于构建跨平台应用程序的框架。 它允许开发人员使用单一代码库创建可在 Windows、macOS、iOS、Android 或任何其他设备上运行的应用程序。与 react native 类似,但使用 C# 而不是 JavaScript。
.NET MAUI 允许 C# 开发人员从单一环境中构建无障碍的移动应用程序、桌面应用程序。 Microsoft .NET MAUI 提供全面的文档和资源,帮助开发人员简化和优化应用程序的开发过程。
在本文中,我们将探讨将功能强大的C# ZIP存档库IronZIP与.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 Extractor 的数据提取任务。
在本节中,我们将重点介绍如何为 .NET MAUI 应用程序设计用户界面。 打开项目文件夹中的MainPage.xaml文件,并添加必要的XAML代码以创建用户友好的界面。
在这里,我们需要两个按钮,一个用于创建 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文件并创建"Create Zip"功能。 实现OnSelectFilesButtonClicked方法,以允许打开FilePicker并选择任意类型的多个文件以创建压缩文件。
然后创建所选文件的所有路径列表。 最后,将其传递给CreateZip方法,在不到一秒钟的时间内,IronZIP将使用所有文件路径无缝创建一个压缩文件。
下面的代码示例展示了如何完成这项任务。
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 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和提取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 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 "按钮,系统会弹出一个文件对话框。 您可以选择多个或单个文件添加到压缩包中。
单击 "打开",将出现一条确认信息,表明文件已成功添加到 output.zip。
如果我们导航到 output.zip 文件并查看其内容,就会看到我们添加的所有文件。
现在让我们来解压一个压缩文件。单击 "解压缩 "按钮,将出现文件对话框。 选择要解压缩的 zip 文件,然后单击打开。
从压缩文件中获取数据并解压缩到所需文件夹后,会显示确认信息。
现在,导航到 "提取的文件 "文件夹,您将看到从我们选择的压缩包中提取的文件。
总之,将 IronZIP 与 .NET MAUI 集成,为在跨平台应用程序中创建、读取和提取归档文件提供了强大的解决方案。
所提供的示例演示了如何在 .NET MAUI 中使用 IronZIP 选择多个文件、生成压缩包并从压缩包中提取文件。
这些技术的结合为开发人员提供了跨平台管理和操作归档的无缝体验。
有关更详细的信息和代码示例,请访问此文档页面。