ZipFileExtensions Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan metode ekstensi untuk ZipArchive kelas dan ZipArchiveEntry .
public ref class ZipFileExtensions abstract sealed
public static class ZipFileExtensions
type ZipFileExtensions = class
Public Module ZipFileExtensions
- Warisan
-
ZipFileExtensions
Keterangan
Kelas ZipFileExtensions hanya berisi metode statis yang memperluas ZipArchive kelas dan ZipArchiveEntry . Anda tidak membuat instans kelas; sebagai gantinya ZipFileExtensions , Anda menggunakan metode ini dari instans ZipArchive atau ZipArchiveEntry.
Untuk menggunakan metode ekstensi, Anda harus mereferensikan assembly System.IO.Compression.FileSystem
dalam proyek Anda. Rakitan System.IO.Compression.FileSystem
tidak tersedia di aplikasi Windows 8.x Store. Oleh karena itu, ZipFileExtensions kelas dan ZipFile (keduanya berada di perakitanSystem.IO.Compression.FileSystem
) tidak tersedia di aplikasi Windows 8.x Store. Di aplikasi Windows 8.x Store, Anda bekerja dengan file terkompresi dengan menggunakan metode di ZipArchive, , ZipArchiveEntryDeflateStream, dan GZipStream.
Kelas ZipFileExtensions berisi empat metode yang memperluas ZipArchive:
Kelas ZipFileExtensions berisi dua metode yang memperluas ZipArchiveEntry:
Contoh
Contoh berikut menunjukkan cara membuat entri baru dalam arsip zip dari file yang ada, dan mengekstrak konten arsip ke direktori.
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
Contoh berikut menunjukkan cara melakukan iterasi melalui konten arsip zip dan mengekstrak file yang memiliki ekstensi .txt.
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
Metode
CreateEntryFromFile(ZipArchive, String, String) |
Mengarsipkan file dengan mengompresinya dan menambahkannya ke arsip zip. |
CreateEntryFromFile(ZipArchive, String, String, CompressionLevel) |
Mengarsipkan file dengan mengompresinya menggunakan tingkat kompresi yang ditentukan dan menambahkannya ke arsip zip. |
ExtractToDirectory(ZipArchive, String) |
Mengekstrak semua file dalam arsip zip ke direktori pada sistem file. |
ExtractToDirectory(ZipArchive, String, Boolean) |
Mengekstrak semua file dalam arsip ke direktori pada sistem file. |
ExtractToFile(ZipArchiveEntry, String) |
Mengekstrak entri dalam arsip zip ke file. |
ExtractToFile(ZipArchiveEntry, String, Boolean) |
Mengekstrak entri dalam arsip zip ke file, dan secara opsional menimpa file yang ada yang memiliki nama yang sama. |