C#でzipファイル内のファイルを削除

C# コンピュータ
C#

ZipFileをUpdateモードで開いてzipファイル内のファイル(Entry)を取得Delete()メソッドで削除します。

ソースコード

using System.IO.Compression;

const string zipfile = @".\test.zip";
const string entryFileName = @"dummy.txt";

// テスト用にzipファイルを新規作成
var zip = ZipFile.Open(zipfile, ZipArchiveMode.Create);

// 削除するdummy.txtファイルを追加
var newEntry = zip.CreateEntry(entryFileName, CompressionLevel.NoCompression);
var stream = newEntry.Open();
var sw = new StreamWriter(stream);
sw.WriteLine("ABC");
sw.Close();
stream.Close();
zip.Dispose();

// ファイルが追加されたことを確認
var zip2 = ZipFile.OpenRead(zipfile);
foreach(var entry in zip2.Entries)
{
    Console.WriteLine($"{entry.FullName}");
    // dummpy.txt
}
zip2.Dispose();

// dummy.txtファイルを削除
var zip3 = ZipFile.Open(zipfile, ZipArchiveMode.Update);
var entry2 = zip3.GetEntry(entryFileName);
// 削除
entry2?.Delete();
zip3.Dispose();

// ファイルが削除されたことを確認
var zip4 = ZipFile.OpenRead(zipfile);
var entry4 = zip3.GetEntry(entryFileName);
if (entry4 is null)
{
    Console.WriteLine($"{entryFileName}は存在しない");
}
else
{
    Console.WriteLine($"{entryFileName}は存在する");
}
zip4.Dispose();


// テストが終わったのでzipファイル自体を削除
File.Delete(zipfile);

実行

dummy.txt
dummy.txtは存在しない

削除のコードよりテスト用のzipファイルの作成及び確認の方がコードが長いのはご愛敬。

コメント