0

とにかく、特定のディレクトリ内のファイルのすべての名前を一覧表示するために使用できるDot Net Zipにはありますか?たとえば、Directory1を指定して、File3やFile4などを取得できます。

ZipFile
-------

File1
File2
Directory1
     File3
     File4
Directory2
     File5
     File6

ZipFileオブジェクトには、エントリ、並べ替えられたエントリ、およびエントリのファイル名のみが含まれます。

誰か?、チーソ?:)

4

1 に答える 1

1

いいえ、はい。EntrancesInDirectoryコレクションはありません。ただし、特定のディレクトリに「属する」エントリを選択するのは、文字列の比較の単純な問題です。

LINQでは次のようになります。

var selection = from e in zip.Entries 
    where e.FileName.StartsWith(directoryName)
    select e;

forループでは、次のようになります。

var list = new List<ZipEntry>();
foreach (var e in zip.Entries) {
  if (e.FileName.StartsWith(directoryName)) {
    list.Add(e);
  }
}

編集

大文字と小文字を区別するために変換を行う必要がある場合があります。Windowsでは、大文字と小文字はファイル名では意味がありません。

詳細な説明:zip形式では、zipファイル内のディレクトリエントリはコンテナとして扱われません。ディレクトリエントリとファイルエントリの間にコンテナの関係はありません。ファイルエントリが特定のディレクトリに「属している」かどうかを判断する唯一の方法は、ファイルエントリのフルネームを調べることです。エントリの名前が問題のディレクトリの名前で始まる場合、エントリはディレクトリの「中に」あります。

于 2010-11-08T02:32:27.863 に答える