使用 IRONZIP

.NET MAUI 資料擷取 SDK 使用 IronZIP

發佈 2023年12月12日
分享:

介紹

.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 進行整合,用於數據提取。

如何從 Zip 壓縮檔案中提取資料

  1. 建立 Visual Studio .NET MAUI 專案

  2. 使用 NuGet 安裝 C# Zip 庫

  3. 設計數據提取應用程式介面

  4. 實作建立 Zip 和解壓縮 Zip 方法

  5. 運行應用程序並驗證結果

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 整合以構建多平台應用程式。

先決條件

在開始之前,請確保您具備以下先決條件:

  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. 點擊「Create」以使用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 提取器的資料提取任務。

創建 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

運行應用程式,您將看到輸出作為常規 Windows 視窗顯示在螢幕上。

.NET MAUI 數據提取 SDK (開發者教程):圖 7

步驟 2 實現代碼

創建 Zip

打開 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
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. 解壓縮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
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

現在就來解壓縮一個 zip 文件。點擊解壓縮 Zip 按鈕,會出現一個文件對話框。 選擇您要提取的壓縮檔,然後點擊開啟。

.NET MAUI 資料提取 SDK(開發者教程):圖11

一旦從 zip 檔案捕獲數據並提取到所需文件夾後,將顯示確認訊息。

.NET MAUI 數據提取 SDK(開發者教程):圖 12

現在,導航到「提取的文件」資料夾,您將看到從我們選擇的 zip 文件中提取的文件。

.NET MAUI資料提取SDK(開發者教程):圖13

結論

總之,將 IronZIP 與 .NET MAUI 結合使用,為跨平台應用程式中的創建、讀取和解壓縮壓縮檔提供了一個強大的解決方案。

所提供的示例展示了如何使用IronZIP在.NET MAUI中選擇多個文件、生成zip壓縮包以及從zip壓縮包中提取文件。

這些技術的組合為開發人員提供了跨各種平台管理和操作檔案的無縫體驗。

如需更詳細的資訊和程式碼範例,請造訪此頁面文檔頁面。

IronZIP 提供一個免費試用. 您可以從以下位置下載該庫這裡試試看。

< 上一頁
.NET ZipArchive (開發者教學)
下一個 >
如何在C#中建立Zip壓縮檔

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 5,596 查看許可證 >