IRONZIPの使用

.NET MAUIデータ抽出SDK with IronZIP

チャクニット・ビン
チャクニット・ビン
2023年12月12日
共有:

イントロダクション

.NET MAUI(.NET Multi-platform App UI)は、クロスプラットフォームアプリケーションを構築するためのフレームワークです。 開発者は、Windows、macOS、iOS、Android、その他あらゆるデバイス上で動作するアプリケーションを単一のコードベースで作成することができる。リアクト・ネイティブに似ているが、JavaScriptの代わりにC#(シーシャープ)で動作する。

.NET MAUIにより、C#(シーシャープ)開発者は、単一の環境から手間のかからないモバイルアプリケーションやデスクトップアプリを構築できます。 Microsoft .NET MAUIは、開発者がアプリ開発プロセスを容易にし、最適化できるよう、本格的なドキュメントとリソースを提供します。

この記事では、データ抽出の目的で.NET MAUIと連携する強力なC# ZIPアーカイブライブラリのIronZIPについて探ります。

Zipアーカイブからデータを抽出する方法

  1. Visual Studio .NET MAUIプロジェクトの作成

  2. NuGetを使用したC# Zipライブラリのインストール

  3. データ抽出アプリのインターフェースをデザインする

  4. Zip作成メソッドとZip展開メソッドの実装

  5. アプリケーションを実行し、結果を確認する

IronZIPの紹介

IronZIP は、.NETでのアーカイブの作成、読み込み、抽出を目的とした包括的なC# ZIPアーカイブライブラリです。 ZIP、TAR、GZIP、BZIP2を含む幅広いアーカイブ形式をサポートしています。IronZIPは.NET 7、6、5、コア、スタンダード、フレームワークなどの様々な.NETバージョンと互換性があります。

クロスプラットフォームなので、Windows、Linux、Mac、iOS、Android、Docker、Azure、AWS上で動作するC#、F#、VB.NETアプリケーションに適しています。

IronZIPの主な特徴は以下の通りです:

  • 様々なOSに対応するクロスプラットフォーム。
  • 異なる.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. Additional Informationから、正しい.NETフレームワークを選択します。 IronZIPは.NETフレームワークの最新バージョンをサポートしています。

    .NET MAUI データ抽出 SDK (開発者チュートリアル): 図 3

  5. Create をクリックして、IronZIP ライブラリを使用した .NET MAUI App for Zip Data Extraction (.NET 用アイアン ZIP) を作成します。

IronZIPのインストール

IronZIPを.NET MAUIプロジェクトに統合するには、以下の手順に従ってください:

  1. ビューからソリューションエクスプローラーを開く。

    .NET MAUI データ抽出 SDK (開発者向けチュートリアル): 図4

  2. ソリューションエクスプローラーでプロジェクトを右クリックします。

  3. Manage NuGet Packages for Solution "を選択します。

    .NET MAUI Data Extraction SDK(開発者チュートリアル):図 5

  4. NuGetブラウズタブで "IronZIP "を検索し、プロジェクトのパッケージをインストールする。

    .NET MAUI データ抽出 SDK(開発者チュートリアル):図 6

  5. Preview Changesダイアログボックスで、"Apply "をクリックして変更を行い、"Accept "をクリックしてIronZIPライセンスを承認します。

  6. NuGetがインストールを終了し、確認メッセージが表示されます。

    さて、すべてのインストールとセットアップが完了したので、.NET MAUIでZip Extractorを作成するデータ抽出タスクに移りましょう。

Zip Extractorの作成手順

ステップ1 アプリのインターフェースをデザインする

このセクションでは、.NET MAUIアプリケーションのユーザーインターフェースの設計に焦点を当てます。 プロジェクトフォルダー内のMainPage.xamlファイルを開き、ユーザーフレンドリーなインターフェースを作成するために必要なXAMLコードを追加してください。

1つはzipファイルを作成するためのボタン、もう1つは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

アプリケーションを実行すると、画面上に通常のウィンドウズ・フォームとして出力されます。

.NET MAUI データ抽出 SDK (開発者チュートリアル): 図7

ステップ2 コードの実装

1.ジップ作成

MainPage.xaml.cs ファイルを開き、「Create Zip」機能を作成します。 OnSelectFilesButtonClicked メソッドを実装して、FilePicker を開き、任意のタイプのファイルを複数選択して zip ファイルを作成できるようにします。

次に、選択したファイルからすべてのパスのリストを作成する。 最後に、それをCreateZipメソッドに渡します。ここで、IronZIPはすべてのファイルパスを使用して、1秒以内にシームレスに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 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
$vbLabelText   $csharpLabel

既存のZIPにファイルを作成、追加、およびZIPを抽出する方法についての詳細な情報は、こちらのチュートリアルページをご覧ください。

2.zipを展開する

次に、「Extract 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
$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 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
$vbLabelText   $csharpLabel

ステップ 3 アプリケーションの実行

IronZIPとコードをうまく統合したら、アプリケーションをビルドして実行し、データ抽出タスクを実行する。 zipファイルを作成し、zipファイルからファイルを抽出して機能をテストする。

指定されたディレクトリにある出力ファイルと抽出されたファイルをチェックして、結果を確認する。

ステップ4 結果の確認

1.テスト作成 Zip

まずZIPファイルを作成してみましょう。CreateZipボタンをクリックすると、ファイルダイアログが表示されます。 zipに追加するファイルは、複数または1つを選択できます。

.NET MAUI データ抽出 SDK(開発者チュートリアル):図8

開く」をクリックすると、ファイルがoutput.zipに正常に追加されたことを示す確認メッセージが表示されます。

.NET MAUI データ抽出 SDK (開発者チュートリアル):図 9

output.zipファイルに移動して中身を見ると、追加したすべてのファイルが表示される。

.NET MAUIデータ抽出SDK(開発者チュートリアル):図10

2.Zipの取り出しテスト

それではZIPファイルを解凍してみましょう。ExtractZipボタンをクリックすると、ファイルダイアログが表示されます。 解凍したいzipファイルを選び、開くをクリックする。

.NET MAUI データ抽出 SDK (開発者チュートリアル): 図 11

zipファイルからのデータキャプチャが完了し、目的のフォルダに解凍されると、確認メッセージが表示されます。

.NET MAUI データ抽出 SDK(開発者チュートリアル):図 12

ここで、"Extracted Files "フォルダに移動すると、私たちが選んだZIPから抽出されたファイルが表示されます。

.NET MAUI データ抽出 SDK(開発者チュートリアル):図13

結論

結論として、IronZIPを.NET MAUIと統合することで、クロスプラットフォームアプリケーションでアーカイブを作成、読み込み、抽出するための強力なソリューションを提供します。

提供されているサンプルは、.NET MAUI内で複数のファイルを選択し、ZIPアーカイブを生成し、ZIPアーカイブからファイルを抽出するためのIronZIPの使い方を示しています。

この技術の組み合わせにより、開発者はさまざまなプラットフォームでアーカイブを管理・操作する際にシームレスな体験を提供できる。

詳細情報やコード例については、こちらのドキュメントページをご覧ください。

IronZIPは無料トライアルを提供しています。 こちらからライブラリをダウンロードして試してみてください。

チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。
< 以前
.NET ZipArchive (開発者チュートリアル)
次へ >
C#でZipアーカイブを作成する方法