跳至頁尾內容
使用 IRONZIP

.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 壓縮包中提取數據

  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. 安裝了 .NET MAUI 工作負載的Visual Studio
  2. 將 IronZIP 庫加入您的 .NET MAUI 專案中。

在 Visual Studio 中建立 .NET MAUI 應用程式的步驟

  1. 開啟 Visual Studio,然後按一下"建立新專案"。
  2. 選擇 .NET MAUI 應用程式專案模板,然後按一下"下一步"。

    ! .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 提取器的資料提取任務。

建立 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 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檔案並建立"建立 Zip "功能。 實作OnSelectFilesButtonClicked方法,允許開啟檔案選擇器並選擇任意類型的多個檔案來建立 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}");
    }
}
$vbLabelText   $csharpLabel

接下來,實作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");
}
$vbLabelText   $csharpLabel

有關如何建立、向現有 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}");
    }
}
$vbLabelText   $csharpLabel

接下來,建立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 " + 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");
}
$vbLabelText   $csharpLabel

步驟 3:運行應用程式

成功將程式碼與 IronZIP 整合後,建置並執行應用程式以執行資料擷取任務。 透過建立 zip 檔案並從中提取檔案來測試功能。

透過檢查指定目錄中的輸出檔案和提取的檔案來驗證結果。

第四步:驗證結果

1. 測試建立 ZIP 文件

我們先來嘗試建立一個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 集成,為在跨平台應用程式中建立、讀取和提取歸檔檔案提供了一個強大的解決方案。

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

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

如需了解更多詳細資訊和程式碼範例,請造訪此文件頁面。

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

常見問題解答

如何將 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 庫新增至您的專案。

如何為 .NET MAUI 應用程式新增 ZIP 功能?

透過整合 IronZIP 來增強 .NET MAUI 應用程序,以管理 ZIP 檔案的建立和提取,為用戶提供強大的資料壓縮和解壓縮功能。

哪裡可以找到更多關於在.NET MAUI中使用ZIP庫的資訊?

有關更詳細的資訊和程式碼範例,您可以造訪 IronZIP 文件頁面,其中提供了有關在 .NET MAUI 專案中整合和使用 ZIP 功能的全面指導。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。