Przejdź do treści stopki
UżYCIE IRONZIP

SDK do wyodrębniania danych .NET MAUI z IronZIP

.NET MAUI, czyli .NET Multi-platform App UI, to framework do tworzenia aplikacji wielopłatformowych. Pozwala to programistom tworzyć aplikacje z jednym kodem źródłowym, które działają na Windows, macOS, iOS, Android i innych urządzeniach. Podobne do React Native, ale wykorzystuje C# zamiast JavaScript.

.NET MAUI pozwala programistom C# tworzyć bezproblemowe aplikacje mobilne i aplikacje desktopowe z jednego środowiska. Microsoft .NET MAUI zapewnia obszerną dokumentację i zasoby, które pomagają programistom usprawnić i zoptymalizować proces tworzenia aplikacji.

W tym artykułe zbadamy integrację IronZIP, potężnej biblioteki archiwów ZIP w C#, z .NET MAUI w celu wyodrębniania danych.

Jak wyodrębnić dane z archiwów ZIP

  1. Utwórz projekt Visual Studio .NET MAUI
  2. Zainstaluj bibliotekę C# ZIP za pomocą NuGet
  3. Zaprojektuj interfejs aplikacji do ekstrakcji danych
  4. Zaimplementuj metody Create ZIP a Extract ZIP
  5. Uruchom aplikację i sprawdź wyniki

Wprowadzenie do IronZIP

IronZIP to kompleksowa biblioteka archiwizacji ZIP w języku C#, zaprojektowana do tworzenia, odczytywania i rozpakowywania archiwów w środowisku .NET. Obsługuje szeroki zakres formatów archiwów, w tym ZIP, TAR, GZIP i BZIP2. IronZIP jest kompatybilny z różnymi wersjami .NET, takimi jak .NET 7, 6, 5, Core, Standard i Framework.

Jest to rozwiązanie wielopłatformowe, dzięki czemu nadaje się do aplikacji C#, F# i VB.NET działających w systemach Windows, Linux, Mac, iOS, Android, Docker, Azure i AWS.

Najważniejsze funkcje IronZIP to:

  • Obsługa wielu platform dla różnych systemów operacyjnych.
  • Kompatybilność z różnymi wersjami .NET i typami projektów.
  • Obsługa tworzenia, odczytu i wyodrębniania archiwów ZIP, TAR, GZIP i BZIP2.
  • Integracja z .NET MAUI do tworzenia aplikacji wielopłatformowych.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że spełniasz następujące wymagania wstępne:

  1. Visual Studio z zainstalowanym środowiskiem .NET MAUI.
  2. Biblioteka IronZIP dodana do projektu .NET MAUI.

Kroki tworzenia aplikacji .NET MAUI w Visual Studio

  1. Otwórz Visual Studio i kliknij "Utwórz nowy projekt".
  2. Wybierz szablon projektu aplikacji .NET MAUI i kliknij Dalej.

    .NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 1

  3. Skonfiguruj ustawienia projektu, nazwę projektu i lokalizację. Kliknij Dalej.

    .NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 2

  4. W sekcji "Dodatkowe informacje" wybierz odpowiednią platformę .NET Framework. IronZIP obsługuje najnowszą wersję .NET Framework, więc można ją wybrać.

    .NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 3

  5. Kliknij Utwórz, aby utworzyć aplikację .NET MAUI do wyodrębniania danych z plików ZIP przy użyciu biblioteki IronZIP.

Zainstaluj IronZIP

Aby zintegrować IronZIP z projektem .NET MAUI, wykonaj następujące kroki:

  1. Otwórz Eksplorator rozwiązań z menu Widok.

    .NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 4

  2. Kliknij prawym przyciskiem myszy swój projekt w Eksploratorze rozwiązań.
  3. Wybierz opcję "Zarządzaj pakietami NuGet dla rozwiązania".

    .NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 5

  4. W zakładce przeglądania NuGet wyszukaj "IronZIP" i zainstaluj pakiet dla swojego projektu.

    .NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 6

  5. W oknie dialogowym Podgląd zmian kliknij "Zastosuj", aby wprowadzić zmiany, a następnie kliknij "Akceptuj", aby zaakceptować licencję IronZIP.
  6. NuGet zakończy instalację i pojawi się komunikat potwierdzający.

Teraz, gdy wszystko jest już zainstalowane i skonfigurowane, przejdźmy do zadania ekstrakcji danych polegającego na stworzeniu programu do rozpakowywania plików ZIP w .NET MAUI.

Kroki tworzenia programu do rozpakowywania plików ZIP

Krok 1: Projekt interfejsu aplikacji

W tej sekcji skupimy się na projektowaniu interfejsu użytkownika dla aplikacji .NET MAUI. Otwórz plik MainPage.xaml w folderze projektu i dodaj niezbędny kod XAML, aby stworzyć przyjazny dla użytkownika interfejs.

W tym przypadku potrzebujemy dwóch przycisków: jednego do tworzenia plików ZIP, a drugiego do rozpakowywania plików ZIP. Konieczne jest również przetłumaczenie kilku etykiet w celu zapewnienia odpowiednich komunikatów. Poniższy przykład kodu przedstawia kod XAML projektu:

<?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

Uruchom aplikację, a na ekranie zobaczysz wynik w postaci standardowych formularzy Windows.

.NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 7

Krok 2: Wdrożenie kodu

1. Utwórz plik ZIP

Otwórz plik MainPage.xaml.cs i utwórz funkcję "Create ZIP". Zaimplementuj metodę OnSelectFilesButtonClicked, aby umożliwić otwarcie okna FilePicker i wybranie wielu plików dowolnego typu w celu utworzenia pliku ZIP.

Następnie utwórz listę wszystkich ścieżek z wybranych plików. Na koniec należy przekazać go do metody CreateZip, gdzie IronZIP w ciągu sekundy płynnie utworzy plik ZIP, wykorzystując wszystkie ścieżki do plików.

Poniższy przykład kodu pokazuje, jak zrealizować to zadanie.

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

Następnie zaimplementuj metodę CreateZip. Klasa IronArchive w IronZIP pobiera ścieżkę, w której ma zostać utworzony plik ZIP. Przechodząc przez każdą wybraną ścieżkę pliku, są one dodawane do pliku ZIP za pomocą metody Add.

Po dodaniu plików wyświetlany jest komunikat potwierdzający za pomocą 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

Aby uzyskać bardziej szczegółowe informacje na temat tworzenia, dodawania plików do istniejącego pliku ZIP oraz rozpakowywania pliku ZIP, odwiedź tę stronę z samouczkiem.

2. Wyodrębnij plik ZIP

Teraz stworzymy funkcję "Extract ZIP". Ponownie, w pliku MainPage.xaml.cs zaimplementuj metodę OnSelectFileButtonClicked, aby umożliwić otwarcie okna FilePicker i wybranie pojedynczego pliku ZIP do wyodrębnienia.

Pełna ścieżka wybranego pliku jest zapisywana w zmiennej typu string i przekazywana do metody ExtractZip, gdzie IronZIP przeprowadza ekstrakcję. Kod wygląda następująco:

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

Następnie utwórz metodę ExtractZip. W tej metodzie należy ustawić ścieżkę do folderu wyjściowego, do którego chcesz wyodrębnić pliki.

Korzystając z metody ExtractArchiveToDirectory biblioteki IronZIP, należy przekazać wybraną ścieżkę do pliku oraz ścieżkę wyjściową. Ta metoda płynnie konwertuje i przenosi wszystkie pliki z archiwum ZIP do folderu wyjściowego. Na koniec, po pomyślnym wyodrębnieniu danych wyświetlany jest komunikat potwierdzający.

Kod wygląda następująco:

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

Krok 3: Uruchom aplikację

Po pomyślnym zintegrowaniu kodu z IronZIP należy skompilować i uruchomić aplikację w celu wykonania zadań związanych z ekstrakcją danych. Sprawdź działanie, tworząc plik ZIP i wyodrębniając pliki z pliku ZIP.

Sprawdź wyniki, przeglądając pliki wyjściowe i wyodrębnione w określonych katalogach.

Krok 4: Sprawdź wyniki

1. Testowanie Utwórz plik ZIP

Spróbujmy najpierw utworzyć plik ZIP. Kliknij przycisk Utwórz plik ZIP, a pojawi się okno dialogowe plików. Możesz wybrać jeden lub wiele plików do dodania do pliku ZIP.

.NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 8

Kliknij Otwórz, a pojawi się komunikat potwierdzający, że pliki zostały pomyślnie dodane do pliku output.zip.

.NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 9

Jeśli przejdziemy do pliku output.zip i wyświetlimy jego zawartość, zobaczymy wszystkie pliki, które dodaliśmy.

.NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 10

2. Testowanie Wyodrębnij plik ZIP

Wyodrębnijmy teraz plik ZIP. Kliknij przycisk Wyodrębnij ZIP, a pojawi się okno dialogowe Plik. Wybierz plik ZIP, który chcesz rozpakować, i kliknij "Otwórz".

.NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 11

Po zakończeniu pobierania danych z pliku ZIP i wyodrębnieniu ich do wybranego folderu wyświetla się komunikat potwierdzający.

.NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 12

Teraz przejdź do folderu "Extracted Files", a zobaczysz pliki wyodrębnione z wybranego przez nas pliku ZIP.

.NET MAUI Data Extraction SDK (samouczek dla programistów): Rysunek 13

Wnioski

Podsumowując, integracja IronZIP z .NET MAUI zapewnia potężne rozwiązanie do tworzenia, odczytywania i wyodrębniania archiwów w aplikacjach wielopłatformowych.

Podany przykład pokazuje, jak używać IronZIP do zaznaczania wielu plików, tworzenia archiwum ZIP oraz wyodrębniania plików z archiwum ZIP w środowisku .NET MAUI.

To połączenie technologii zapewnia programistom płynne zarządzanie archiwami i pracę z nimi na różnych platformach.

Aby uzyskać bardziej szczegółowe informacje i przykłady kodu, odwiedź tę stronę dokumentacji.

IronZIP oferuje bezpłatną wersję próbną. Bibliotekę można pobrać tutaj i wypróbować.

Często Zadawane Pytania

Jak moge zintegrowac biblioteke ZIP z projektem .NET MAUI?

Aby zintegrowac biblioteke ZIP, taka jak IronZIP, z projektem .NET MAUI, utworz nowy projekt .NET MAUI w Visual Studio, zainstaluj biblioteke IronZIP za posrednictwem NuGet i zaimplementuj funkcje archiwizacji ZIP przy uzyciu dostarczonych przykladow kodu.

Jakie sa korzysci z uzywania biblioteki ZIP w aplikacji .NET MAUI?

Uzycie biblioteki ZIP, takiej jak IronZIP, w aplikacji .NET MAUI pozwala na efektywna kompresje i ekstrakcje danych, wspiera wiele formatow archiwow i jest kompatybilne na roznych platformach i wersjach .NET.

Czy mogę używać biblioteki ZIP w aplikacjach wieloplatformowych?

Tak, można używać IronZIP w aplikacjach wieloplatformowych. Obsługuje on aplikacje napisane w językach C#, F# i VB.NET na systemach Windows, Linux, Mac, iOS i Android.

Jak utworzyć plik ZIP w aplikacji .NET MAUI?

W aplikacji .NET MAUI można utworzyć plik ZIP za pomocą biblioteki IronZIP. Należy zaimplementować metodę OnSelectFilesButtonClicked, aby umożliwić wybór plików, a następnie użyć klasy IronArchive do dodania plików do archiwum ZIP za pomocą metody CreateZip.

Jak wyodrębnić pliki z archiwum ZIP w projekcie .NET MAUI?

Aby wyodrębnić pliki z archiwum ZIP w projekcie .NET MAUI, należy użyć metody ExtractArchiveToDirectory biblioteki IronZIP. Najpierw należy zaimplementować metodę OnSelectFileButtonClicked w celu wybrania pliku ZIP, a następnie wyodrębnić jego zawartość do określonego katalogu.

Jakie formaty archiwów obsługuje IronZIP?

IronZIP obsługuje wiele formatów archiwów, w tym ZIP, TAR, GZIP i BZIP2, co czyni go wszechstronnym wyborem do obsługi różnych typów skompresowanych archiwów plików.

Czy IronZIP jest zgodny z różnymi wersjami .NET?

Tak, IronZIP jest kompatybilny z różnymi wersjami .NET, takimi jak .NET 7, 6, 5, Core, Standard i Framework, zapewniając elastyczność programistom pracującym w różnych środowiskach .NET.

Jakie są warunki wstępne wdrożenia biblioteki ZIP w .NET MAUI?

Aby zaimplementować bibliotekę ZIP, taką jak IronZIP, w .NET MAUI, upewnij się, że masz zainstalowane Visual Studio z dodatkiem .NET MAUI oraz że biblioteka IronZIP została dodana do projektu za pośrednictwem NuGet.

Jak mogę wzbogacić aplikację .NET MAUI o funkcje ZIP?

Ulepsz aplikację .NET MAUI, integrując IronZIP w celu zarządzania tworzeniem i rozpakowywaniem plików ZIP, zapewniając użytkownikom solidne możliwości kompresji i dekompresji danych.

Gdzie mogę znaleźć więcej informacji na temat korzystania z bibliotek ZIP w .NET MAUI?

Aby uzyskać bardziej szczegółowe informacje i przykłady kodu, można odwiedzić stronę dokumentacji IronZIP, która zawiera wyczerpujące wskazówki dotyczące integracji i wykorzystania funkcji ZIP w projektach .NET MAUI.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie