ZipFile.OpenRead(String) Yöntem

Tanım

Belirtilen yolda okumak için bir zip arşivi açar.

public static System.IO.Compression.ZipArchive OpenRead (string archiveFileName);

Parametreler

archiveFileName
String

Açılacak arşivin yolu, göreli veya mutlak yol olarak belirtilir. Göreli yol, geçerli çalışma dizinine göre yorumlanır.

Döndürülenler

Açılan zip arşivi.

Özel durumlar

archiveFileName , Emptyyalnızca boşluk içerir veya en az bir geçersiz karakter içerir.

archiveFileName, null değeridir.

içinde archiveFileName, belirtilen yol, dosya adı veya her ikisi de sistem tanımlı uzunluk üst sınırını aşıyor.

archiveFileName geçersiz veya mevcut değil (örneğin, eşlenmemiş bir sürücüde).

archiveFileName açılamadı.

-veya-

Dosya açılırken belirtilmemiş bir G/Ç hatası oluştu.

archiveFileName bir dizin belirtir.

-veya-

Çağıranın içinde archiveFileNamebelirtilen dosyaya erişmek için gerekli izni yok.

içinde archiveFileName belirtilen dosya bulunamadı.

archiveFileName geçersiz bir biçim içeriyor.

archiveFileName zip arşivi olarak yorumlanamadı.

Örnekler

Aşağıdaki örnekte, okuma için zip arşivini açma gösterilmektedir.

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);
                }
            }
        }
    }
}

Açıklamalar

Bu yöntem, yöntemini çağırmak Open ve parametresini olarak ayarlamakla modeReadeşdeğerdir. Arşiv, dosya modu değeri olarak ile FileMode.Open açılır. Arşiv yoksa bir FileNotFoundException özel durum oluşturulur.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0