Wyodrębnianie zawartości E00 z ZIP w .NET
Użyj Aspose.ZIP for .NET, aby otworzyć archiwum ZIP, sprawdzić jego wpisy i przywrócić tylko pliki E00, których potrzebuje aplikacja C#. Na tej stronie ekstrakcja oznacza odnalezienie elementów z rozszerzeniem .e00 w kontenerze ZIP i zapisanie ich w kontrolowanej lokalizacji. Aspose.ZIP przywraca plik zapisany w archiwum; nie interpretuje ani nie konwertuje jego wewnętrznej zawartości.
Selektywne wyodrębnianie jest przydatne w scenariuszach takich jak import danych, pakiety GIS, wymiana kontaktów lub kalendarzy oraz integracje danych. Aplikacja może pominąć niepowiązane wpisy, sprawdzić nazwy i rozmiary oraz przekazać zatwierdzone pliki do kolejnego etapu bez rozpakowywania całego pakietu.
Jak wyodrębnić pliki E00 z ZIP w C#
Zainstaluj
pakiet Aspose.ZIP for .NET
i odwołaj się do namespace Aspose.Zip. Metadane archiwum są dostępne przed zapisem, więc aplikacja może sprawdzić ArchiveEntry.Name, ArchiveEntry.IsDirectory i ArchiveEntry.UncompressedSize przed zapisaniem pliki danych.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Po instalacji otwórz ZIP klasą Archive, przejdź po Archive.Entries, wybierz wpisy niebędące katalogami z rozszerzeniem .e00 i wywołaj ArchiveEntry.Extract dla każdej zatwierdzonej lokalizacji. Przykład używa tylko końcowej nazwy pliku, dzięki czemu ścieżki z archiwum nie mogą zapisywać poza folderem docelowym.
Kroki wyodrębniania plików E00 w C#
- Zdefiniuj ścieżkę źródłowego ZIP i utwórz izolowany katalog wyjściowy.
- Otwórz pakiet klasą
Archive. - Przejdź po
Archive.Entrieszamiast od razu rozpakowywać cały pakiet. - Pomiń katalogi i wybierz nazwy plików z rozszerzeniem
.e00. - Zbuduj ścieżkę docelową pozostającą w zatwierdzonym katalogu głównym.
- Odrzuć wpisy przekraczające skonfigurowany limit rozmiaru po rozpakowaniu.
- Zapisz każdy zatwierdzony wpis przez
ArchiveEntry.Extract.
Wymagania systemowe
- A supported .NET runtime on Windows, Linux, or macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code, or another C# development environment.
- Aspose.ZIP for .NET installed through NuGet or referenced as an assembly.
- Read access to the source ZIP and write access to the destination directory.
- Clear size, execution-time, and temporary-storage limits for untrusted archives.
Przykład C#: wyodrębnianie wybranych plików E00 z ZIP
Kod otwiera pakiet ZIP, pomija katalogi, filtruje wpisy według dozwolonego rozszerzenia i zapisuje pasujące pliki w jednym katalogu wyjściowym. Spłaszczenie ścieżek archiwum zapobiega kontrolowaniu lokalizacji docelowej przez segmenty katalogów nadrzędnych. W kodzie produkcyjnym zdefiniuj także deterministyczną regułę dla duplikatów nazw.
Wyodrębnianie plików E00 z ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-e00");
string[] allowedExtensions = { ".e00" };
const ulong MaxEntrySize = 100UL * 1024 * 1024;
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
foreach (ArchiveEntry entry in archive.Entries)
{
if (entry.IsDirectory) continue;
string fileName = Path.GetFileName(entry.Name);
if (string.IsNullOrWhiteSpace(fileName)) continue;
string extension = Path.GetExtension(fileName);
if (!Array.Exists(
allowedExtensions,
value => string.Equals(value, extension, StringComparison.OrdinalIgnoreCase)))
{
continue;
}
if (entry.UncompressedSize > MaxEntrySize)
{
throw new InvalidDataException(
$"Entry '{fileName}' exceeds the 100 MB extraction limit.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
Uwagi implementacyjne dla plików E00
Filtrowanie po rozszerzeniu identyfikuje tylko kandydatów; nie dowodzi, że zawartość jest poprawna lub bezpieczna. Schemat, kodowanie, układ współrzędnych i reguły biznesowe zweryfikuj komponentem przetwarzającym dane po ekstrakcji.
The example intentionally flattens archived paths. If two approved entries have the same final file name, ArchiveEntry.Extract can overwrite an existing file. Define a policy before extraction: reject duplicates, generate unique names, or preserve a validated relative folder structure.
Bezpieczeństwo i prywatność
Traktuj przesłane ZIP, nazwy wpisów i zawartość jako niezaufane wejście. Nie łącz ArchiveEntry.Name bezpośrednio z katalogiem wyjściowym, ponieważ wpis może zawierać ścieżkę bezwzględną albo segmenty przechodzące do katalogu nadrzędnego. Przykład używa Path.GetFileName; jeśli trzeba zachować foldery, rozwiąż końcową ścieżkę i sprawdź, czy pozostaje w zatwierdzonym katalogu głównym.
Ogranicz rozmiar skompresowany, rozmiar po rozpakowaniu per wpis i łącznie, liczbę wpisów, czas przetwarzania oraz zadania równoległe. Używaj tymczasowego magazynu z ograniczonymi uprawnieniami, usuwaj wyniki częściowe po błędzie i nie loguj haseł, prywatnych nazw plików ani wyodrębnionej zawartości.
FAQ wyodrębniania plików E00
Jak wyodrębnić tylko pliki E00 z archiwum ZIP w C#?
Otwórz ZIP klasą Archive, przejdź po Archive.Entries, przefiltruj wpisy niebędące katalogami według rozszerzenia .e00 i wywołaj Extract dla każdej zweryfikowanej ścieżki wyjściowej.
Czy Aspose.ZIP waliduje wewnętrzną zawartość wyodrębnionego pliku E00?
Nie. Aspose.ZIP przywraca plik zapisany w archiwum. Odczyt, walidacja lub konwersja zawartości należy do komponentu obsługującego dany format.
Czy ten sam wzorzec wyboru działa z kontenerami 7Z, RAR lub TAR?
Koncepcja jest taka sama, ale każdy kontener trzeba otworzyć odpowiednią klasą archiwum Aspose.ZIP. Typy wpisów i obsługiwane operacje mogą różnić się między formatami.
Jak obsłużyć zduplikowane nazwy plików E00?
Ustal regułę przed ekstrakcją: odrzucanie duplikatów, generowanie unikalnych nazw albo zachowanie zweryfikowanej względnej struktury folderów.
Powiązane Przewodniki Wyodrębniania Danych
Przeglądaj strony C# dla formatów danych często dołączanych do archiwów ZIP.