跳過到頁腳內容
使用 IRONZIP

.NET MAUI 數據提取 SDK 與 IronZIP

.NET MAUI,即.NET多平台應用程式 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簡介

IronZIP是一個全面的 C# ZIP 歸檔庫,專為在.NET中建立、讀取和提取歸檔而設計。 IronZIP支援多種壓縮格式,包括 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 類將文件添加到 ZIP 存檔中,並使用 CreateZip 方法進行創建。

如何在 .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 以管理 ZIP 文件的創建和提取,增強 .NET MAUI 應用,為用戶提供強大的數據壓縮和解壓能力。

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

有關更多詳細信息和代碼示例,您可以訪問 IronZIP 檔案頁面,該頁提供了有關整合和使用在 .NET MAUI 項目中 ZIP 功能的全面指導。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我