ZipArchiveEntry 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.
Mewakili file terkompresi dalam arsip zip.
public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
- Warisan
-
ZipArchiveEntry
Keterangan
Arsip zip berisi entri untuk setiap file terkompresi. Kelas memungkinkan ZipArchiveEntry Anda memeriksa properti entri, dan membuka atau menghapus entri. Saat membuka entri, Anda dapat memodifikasi file terkompresi dengan menulis ke aliran untuk file terkompresi tersebut.
Metode untuk memanipulasi arsip zip dan entri filenya tersebar di tiga kelas: ZipFile, ZipArchive dan ZipArchiveEntry.
Untuk... | Menggunakan... |
---|---|
Create arsip zip dari direktori | ZipFile.CreateFromDirectory |
Mengekstrak konten arsip zip ke direktori | ZipFile.ExtractToDirectory |
Menambahkan file baru ke arsip zip yang sudah ada | ZipArchive.CreateEntry |
Mengambil file dalam arsip zip | ZipArchive.GetEntry |
Mengambil semua file dalam arsip zip | ZipArchive.Entries |
Untuk membuka aliran ke file individual yang terkandung dalam arsip zip | ZipArchiveEntry.Open |
Menghapus file dari arsip zip | ZipArchiveEntry.Delete |
Jika Mereferensikan assembly System.IO.Compression.FileSystem
dalam proyek, Anda dapat mengakses dua metode ekstensi untuk kelas tersebut ZipArchiveEntry . Metode tersebut adalah ExtractToFile(ZipArchiveEntry, String) dan ExtractToFile(ZipArchiveEntry, String, Boolean), dan memungkinkan Anda untuk mendekompresi konten entri ke file. Rakitan System.IO.Compression.FileSystem
tidak tersedia di Windows 8. Di aplikasi Windows 8.x Store, Anda dapat mendekompresi konten arsip dengan menggunakan DeflateStream atau GZipStream, atau Anda dapat menggunakan jenis Compressor Windows Runtime dan Decompressor untuk mengompresi dan mendekompresi file.
Contoh
Contoh pertama menunjukkan cara membuat entri baru dalam arsip zip dan menulisnya.
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
using (FileStream zipToOpen = new FileStream(@"c:\users\exampleuser\release.zip", FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
ZipArchiveEntry readmeEntry = archive.CreateEntry("Readme.txt");
using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
{
writer.WriteLine("Information about this package.");
writer.WriteLine("========================");
}
}
}
}
}
}
Imports System.IO
Imports System.IO.Compression
Module Module1
Sub Main()
Using zipToOpen As FileStream = New FileStream("c:\users\exampleuser\release.zip", FileMode.Open)
Using archive As ZipArchive = New ZipArchive(zipToOpen, ZipArchiveMode.Update)
Dim readmeEntry As ZipArchiveEntry = archive.CreateEntry("Readme.txt")
Using writer As StreamWriter = New StreamWriter(readmeEntry.Open())
writer.WriteLine("Information about this package.")
writer.WriteLine("========================")
End Using
End Using
End Using
End Sub
End Module
Contoh kedua menunjukkan cara menggunakan ExtractToFile(ZipArchiveEntry, String) metode ekstensi. Anda harus mereferensikan assembly System.IO.Compression.FileSystem
dalam proyek Anda agar kode dapat dijalankan.
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
Properti
Archive |
Mendapatkan arsip zip milik entri tersebut. |
Comment |
Mendapatkan atau mengatur komentar entri opsional. |
CompressedLength |
Mendapatkan ukuran terkompresi, yang dinyatakan dalam byte, dari entri dalam arsip zip. |
Crc32 |
Pemeriksaan Redundan Cyclic 32-bit. |
ExternalAttributes |
Atribut file khusus OS dan aplikasi. |
FullName |
Mendapatkan jalur relatif entri dalam arsip zip. |
IsEncrypted |
Mendapatkan nilai yang menunjukkan apakah entri dienkripsi. |
LastWriteTime |
Mendapatkan atau mengatur terakhir kali entri dalam arsip zip diubah. |
Length |
Mendapatkan ukuran yang tidak dikompresi, yang dinyatakan dalam byte, dari entri dalam arsip zip. |
Name |
Mendapatkan nama file entri dalam arsip zip. |
Metode
Delete() |
Menghapus entri dari arsip zip. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari yang saat ini Object. (Diperoleh dari Object) |
Open() |
Membuka entri dari arsip zip. |
ToString() |
Mengambil jalur relatif entri dalam arsip zip. |
Metode Ekstensi
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. |