使用IRONZIP

IronZIP for .NET MAUI 数据提取 SDK

发布 2023年十二月12日
分享:

介绍

.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集成以进行数据提取。

如何从 Zip 档案中提取数据

  1. 创建 Visual Studio .NET MAUI 项目

  2. 使用 NuGet 安装 C# Zip 库

  3. 设计数据提取应用程序界面

  4. 实现创建 Zip 和提取 Zip 方法

  5. 运行应用程序并验证结果

IronZIP 简介

IronZIPZIP 压缩包是一个全面的 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 集成,用于构建多平台应用程序。

先决条件

在开始之前,请确保您具备以下先决条件:

  1. Visual Studio翻译时必须安装 .NET MAUI 工作负载。

  2. IronZIP 库已添加到您的 .NET MAUI 项目中。

在 Visual Studio 中创建 .NET MAUI 应用程序的步骤

  1. 打开 Visual Studio,点击 "创建新项目"。

  2. 选择 .NET MAUI App 项目模板,然后单击下一步。

    .NET MAUI 数据提取 SDK(开发人员教程):图 1

  3. 配置项目设置、项目名称和位置。 单击下一步。

    .NET MAUI 数据提取 SDK(开发人员教程):图 2

  4. 从 "附加信息 "中选择合适的 .NET Framework。 IronZIP 支持最新版本的 .NET Framework,因此您可以选择该版本。

    .NET MAUI 数据提取 SDK(开发人员教程):图 3

  5. 单击 "创建",使用 IronZIP 库创建用于 Zip 数据提取的 .NET MAUI 应用程序。

安装 IronZIP

要将 IronZIP 集成到您的 .NET MAUI 项目中,请按照以下步骤操作:

  1. 从 "视图 "打开 "解决方案资源管理器"。

    .NET MAUI 数据提取 SDK(开发人员教程):图 4

  2. 右键单击解决方案资源管理器中的项目。

  3. 选择 "管理解决方案的 NuGet 包"。

    .NET MAUI 数据提取 SDK(开发人员教程):图 5

  4. 在 NuGet 浏览选项卡中,搜索 "IronZIP "并为您的项目安装软件包。

    .NET MAUI 数据提取 SDK(开发人员教程):图 6

  5. 在 "预览更改 "对话框中,点击 "应用 "进行更改,然后点击 "接受 "接受 IronZIP 许可。

  6. NuGet 将完成安装并显示确认信息。

    现在,一切都已安装和设置完毕,让我们开始在 .NET MAUI 中创建 Zip Extractor 的数据提取任务。

创建 Zip 提取器的步骤

步骤 1 设计应用程序界面

在本节中,我们将重点介绍如何为 .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>
XML

运行应用程序,您将在屏幕上看到常规 Windows 表单的输出。

.NET MAUI 数据提取 SDK(开发人员教程):图 7

步骤 2 执行代码

1.创建压缩文件

打开MainPage.xaml.cs文件并创建" "。创建压缩"功能。 实现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
VB   C#

现在,让我们来实现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
VB   C#

有关如何创建压缩包、在现有压缩包中添加文件和解压缩的详细信息,请访问此页面教程页面.

2.提取压缩包

现在,我们将创建"提取压缩"功能。 同样,在MainPage.xaml.cs文件中,实现OnSelectFileButtonClicked方法,以便打开FilePicker并选择一个压缩文件进行提取。

所选文件的完整路径将被设置为字符串变量,并发送到 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
VB   C#

现在,让我们创建 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
VB   C#

步骤 3 运行应用程序

在成功将代码与 IronZIP 集成后,构建并运行应用程序以执行数据提取任务。 通过创建压缩文件和从压缩文件中提取文件来测试功能。

通过检查指定目录中的输出和提取文件来验证结果。

步骤 4 验证结果

1.测试创建 Zip

让我们先尝试创建一个压缩文件。单击 "创建 Zip "按钮,系统会弹出一个文件对话框。 您可以选择多个或单个文件添加到压缩包中。

.NET MAUI 数据提取 SDK(开发人员教程):图 8

单击 "打开",将出现一条确认信息,表明文件已成功添加到 output.zip。

.NET MAUI 数据提取 SDK(开发人员教程):图 9

如果我们导航到 output.zip 文件并查看其内容,就会看到我们添加的所有文件。

.NET MAUI 数据提取 SDK(开发人员教程):图 10

2.测试提取压缩包

现在让我们来解压一个压缩文件。单击 "解压缩 "按钮,将出现文件对话框。 选择要解压缩的 zip 文件,然后单击打开。

.NET MAUI 数据提取 SDK(开发人员教程):图 11

从压缩文件中获取数据并解压缩到所需文件夹后,会显示确认信息。

.NET MAUI 数据提取 SDK(开发人员教程):图 12

现在,导航到 "提取的文件 "文件夹,您将看到从我们选择的压缩包中提取的文件。

.NET MAUI 数据提取 SDK(开发人员教程):图 13

结论

总之,将 IronZIP 与 .NET MAUI 集成,为在跨平台应用程序中创建、读取和提取归档文件提供了强大的解决方案。

所提供的示例演示了如何在 .NET MAUI 中使用 IronZIP 选择多个文件、生成压缩包并从压缩包中提取文件。

这些技术的结合为开发人员提供了跨平台管理和操作归档的无缝体验。

有关更多详细信息和代码示例,请访问此处文件page.

IronZIP 提供了一个免费试用. 您可以从以下网址下载该库*这里***并试一试。

< 前一页
.NET ZipArchive(开发者教程)
下一步 >
如何在C#中创建Zip档案

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 5,596 查看许可证 >