跳至頁尾內容
USING 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中建立、讀取和提取檔案而設計。 它支持多種壓縮檔案格式,包括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 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提取器的資料提取任務。

建立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 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
$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");
}
Private Async Sub CreateZip(ByVal selectedFilePaths As List(Of String))
	Dim path = "E:\output.zip"
	' Create a Zip
	Using archive = New IronArchive(path)
		' Add files to the ZIP
		For Each file In selectedFilePaths
			archive.Add(file)
		Next file
	End Using
	Await DisplayAlert("Congratulations", "All files added to " & path, "Ok")
End Sub
$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}");
    }
}
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 a single file 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
$vbLabelText   $csharpLabel

接下來,建立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 " + 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");
}
Private Async Sub ExtractZip(ByVal selectedFilePath As String)
	Dim path = "E:\Extracted Files"
	IronArchive.ExtractArchiveToDirectory(selectedFilePath, path)
	Await DisplayAlert("Congratulations", "All files extracted to " & path, "Ok")
End Sub
$vbLabelText   $csharpLabel

步驟3:運行應用程式

成功整合程式碼和IronZIP後,構建並運行應用程式以執行資料提取任務。 通過建立zip文件和從zip文件中提取文件來測試功能。

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

步驟4:驗證結果

1. 測試建立Zip

讓我們先嘗試建立一個zip文件。點擊建立Zip按鈕,它將顯示文件對話框。 您可以選擇多個或單個文件加入zip中。

.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

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

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

結論

總之,將IronZIP與.NET MAUI整合提供了一個強大的方案,便於在跨平台應用中建立、讀取和提取壓縮文件。

提供的範例演示了如何在.NET MAUI中使用IronZIP選擇多個文件、生成zip檔案和從zip檔案提取文件。

這些技術的組合為開發者提供了無縫的體驗,方便在不同的平臺上管理和處理壓縮檔案。

如需更多詳細資訊和程式碼範例,請存取此文件頁面。

IronZIP提供免費試用。 您可以從此處下載程式庫並試用。

常見問題

如何將 ZIP 程式庫與 .NET MAUI 專案整合?

要將 ZIP 程式庫如 IronZIP 與 .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 程式庫,請確保您的 Visual Studio 已裝有 .NET MAUI 工作負載,以及已經通過 NuGet 將 IronZIP 程式庫新增到您的專案中。

如何增強 .NET MAUI 應用的 ZIP 功能?

藉由整合 IronZIP 來增強 .NET MAUI 應用,以管理 ZIP 檔案的建立和提取,為使用者提供強大的資料壓縮和解壓能力。

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

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

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

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