使用 IRONZIP

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

發佈 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# 壓縮檔案庫

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

  4. 實作建立壓縮檔和提取壓縮檔的方法

  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. 在您的 .NET MAUI 專案中添加 IronZIP 程式庫。

在 Visual Studio 中創建 .NET MAUI 應用程序的步驟

  1. 打開 Visual Studio 並點擊 "Create a New project"。

  2. 選擇 .NET MAUI App 專案範本,然後點擊 "Next"。

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

  3. 配置項目設定、項目名稱及位置。點擊下一步。

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

  4. 從附加資訊中選擇合適的 .NET Framework。IronZIP 支援最新版本的 .NET Framework,您可以選擇這個版本。

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

  5. 點擊Create來創建使用IronZIP庫的.NET MAUI ZIP數據提取應用程式。

安裝 IronZIP

要將 IronZIP 整合到您的 .NET MAUI 專案中,請按照以下步驟操作:

  1. 從“視圖”中打開“方案總管”。

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

  2. 在方案總管中右鍵點擊您的專案。

  3. 選擇「管理方案的 NuGet 套件」。

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

  4. 在 NuGet 瀏覽標籤中,搜尋 "IronZIP" 並為您的專案安裝套件。

    .NET MAUI 數據提取 SDK(開發人員教程):圖 6

  5. 在預覽變更對話框中,點擊 "Apply" 進行變更,然後點擊 "Accept" 以接受 IronZIP 許可證。

  6. NuGet 將完成安裝,並顯示確認消息。

現在,一切都已安裝和設置好,我們來進行建立 Zip 提取器在 .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>
XML

運行應用程式,你將在螢幕上看到以常規 Windows 表單呈現的輸出。

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

步驟 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
VB   C#

現在,讓我們實現 CreateZip 方法,其中 IronZIP 的 IronArchive 類別會接收要創建的壓縮檔案名路徑。遍歷每個選定的檔案路徑,它們將通過 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"功能。在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 方法,傳遞選定的文件路徑和輸出路徑。此方法無縫轉換並傳輸 zip 中的所有文件到輸出文件夾。最後,在成功提取後會顯示確認消息。

代碼如下:

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#

第三步 運行應用程式

成功集成代碼和IronZIP後,構建並運行應用程式以執行數據提取任務。通過創建ZIP文件並從ZIP文件中提取文件來測試功能。

通過檢查指定目錄中的輸出和提取的文件來驗證結果。

第4步 確認結果

1. 測試建立壓縮檔

首先嘗試建立一個壓縮檔。點擊“建立壓縮檔”按鈕,將會彈出一個文件對話框。您可以選擇多個或單個文件添加到壓縮檔中。

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

點擊開啟,然後會出現一條確認訊息,表示檔案已成功添加到output.zip。

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

如果我們導航到 output.zip 文件並查看其內容,我們會看到我們添加的所有文件。

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

2. 測試提取Zip檔案

現在我們來提取一個Zip檔案。點擊提取Zip按鈕,會出現一個文件對話框。選擇你想要提取的Zip檔案並點擊打開。

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

一旦資料從 zip 檔案中擷取完成並解壓縮到所需的資料夾,就會顯示確認訊息。

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

現在,導覽至「已提取文件」資料夾,您會看到我們選擇的壓縮檔中提取的文件。

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

結論

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

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

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

欲了解更多詳細信息和程式碼範例,請訪問此 文檔 頁面。

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

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

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

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