ZipFileExtensions Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje rozšiřující metody pro ZipArchive třídy a ZipArchiveEntry .
public ref class ZipFileExtensions abstract sealed
public static class ZipFileExtensions
type ZipFileExtensions = class
Public Module ZipFileExtensions
- Dědičnost
-
ZipFileExtensions
Poznámky
Třída ZipFileExtensions obsahuje pouze statické metody, které rozšiřují ZipArchive třídy a ZipArchiveEntry . Nevytvoříte instanci ZipFileExtensions třídy; místo toho použijete tyto metody z instancí ZipArchive nebo ZipArchiveEntry.
Chcete-li použít rozšiřující metody, musíte odkazovat na System.IO.Compression.FileSystem
sestavení v projektu. Sestavení System.IO.Compression.FileSystem
není k dispozici v aplikacích Windows 8.x Store. ZipFileExtensions Proto třídy a ZipFile (obě třídy jsou v System.IO.Compression.FileSystem
sestavení) nejsou k dispozici v aplikacích Windows 8.x Store. V aplikacích Windows 8.x Store pracujete s komprimovanými soubory pomocí metod v ZipArchive, ZipArchiveEntry, DeflateStreama GZipStream.
Třída ZipFileExtensions obsahuje čtyři metody, které rozšiřují ZipArchive:
Třída ZipFileExtensions obsahuje dvě metody, které rozšiřují ZipArchiveEntry:
Příklady
Následující příklad ukazuje, jak vytvořit novou položku v archivu zip z existujícího souboru a extrahovat obsah archivu do adresáře.
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string zipPath = @"c:\users\exampleuser\start.zip";
string extractPath = @"c:\users\exampleuser\extract";
string newFile = @"c:\users\exampleuser\NewFile.txt";
using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
{
archive.CreateEntryFromFile(newFile, "NewEntry.txt");
archive.ExtractToDirectory(extractPath);
}
}
}
}
Imports System.IO
Imports System.IO.Compression
Module Module1
Sub Main()
Dim zipPath As String = "c:\users\exampleuser\end.zip"
Dim extractPath As String = "c:\users\exampleuser\extract"
Dim newFile As String = "c:\users\exampleuser\NewFile.txt"
Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
archive.CreateEntryFromFile(newFile, "NewEntry.txt", CompressionLevel.Fastest)
archive.ExtractToDirectory(extractPath)
End Using
End Sub
End Module
Následující příklad ukazuje, jak iterovat obsah archivu zip a extrahovat soubory, které mají .txt příponu.
using System;
using System.IO;
using System.IO.Compression;
class Program
{
static void Main(string[] args)
{
string zipPath = @".\result.zip";
Console.WriteLine("Provide path where to extract the zip file:");
string extractPath = Console.ReadLine();
// Normalizes the path.
extractPath = Path.GetFullPath(extractPath);
// Ensures that the last character on the extraction path
// is the directory separator char.
// Without this, a malicious zip file could try to traverse outside of the expected
// extraction path.
if (!extractPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
extractPath += Path.DirectorySeparatorChar;
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
{
// Gets the full path to ensure that relative segments are removed.
string destinationPath = Path.GetFullPath(Path.Combine(extractPath, entry.FullName));
// Ordinal match is safest, case-sensitive volumes can be mounted within volumes that
// are case-insensitive.
if (destinationPath.StartsWith(extractPath, StringComparison.Ordinal))
entry.ExtractToFile(destinationPath);
}
}
}
}
}
Imports System.IO
Imports System.IO.Compression
Module Module1
Sub Main()
Dim zipPath As String = ".\result.zip"
Console.WriteLine("Provide path where to extract the zip file:")
Dim extractPath As String = Console.ReadLine()
' Normalizes the path.
extractPath = Path.GetFullPath(extractPath)
' Ensures that the last character on the extraction path
' is the directory separator char.
' Without this, a malicious zip file could try to traverse outside of the expected
' extraction path.
If Not extractPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal) Then
extractPath += Path.DirectorySeparatorChar
End If
Using archive As ZipArchive = ZipFile.OpenRead(zipPath)
For Each entry As ZipArchiveEntry In archive.Entries
If entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then
' Gets the full path to ensure that relative segments are removed.
Dim destinationPath As String = Path.GetFullPath(Path.Combine(extractPath, entry.FullName))
' Ordinal match is safest, case-sensitive volumes can be mounted within volumes that
' are case-insensitive.
If destinationPath.StartsWith(extractPath, StringComparison.Ordinal) Then
entry.ExtractToFile(destinationPath)
End If
End If
Next
End Using
End Sub
End Module
Metody
CreateEntryFromFile(ZipArchive, String, String) |
Archivuje soubor tak, že ho komprimuje a přidá do archivu zip. |
CreateEntryFromFile(ZipArchive, String, String, CompressionLevel) |
Archivuje soubor tak, že ho komprimuje pomocí zadané úrovně komprese a přidá ho do archivu zip. |
ExtractToDirectory(ZipArchive, String) |
Extrahuje všechny soubory v archivu zip do adresáře v systému souborů. |
ExtractToDirectory(ZipArchive, String, Boolean) |
Extrahuje všechny soubory v archivu do adresáře v systému souborů. |
ExtractToFile(ZipArchiveEntry, String) |
Extrahuje položku v archivu zip do souboru. |
ExtractToFile(ZipArchiveEntry, String, Boolean) |
Extrahuje položku v archivu zip do souboru a volitelně přepíše existující soubor se stejným názvem. |