私は現在、このコードを持っています:
foreach (string file in openFileDialog1.FileNames)
{
String ExtractPath = Path.GetDirectoryName(file);
try
{
using (ZipFile zip = ZipFile.Read(file))
{
zip.ExtractProgress += ExtractProgress;
foreach (ZipEntry e in zip)
{
try
{
e.Extract(ExtractPath,ExtractExistingFileAction.OverwriteSilently); // true => overwrite existing files
}
catch
{
}
}
}
}
catch
{
}
}
これは正常に機能し、選択した 1 つ以上の zip ファイルを同時に抽出します。しかし、ファイルごとに個別のディレクトリを作成し、作成したディレクトリに各ファイルを配置する方法について混乱しています。
例:
ユーザーは、抽出する 2 つの zip ファイルを選択します。2 つの zip ファイルは、「A.zip」および「B.zip」と呼ばれます。
抽出したファイルをプログラムで独自のディレクトリに配置して、さらに使用するためにふるいにかけたいと思います。
したがって、zipファイル「A.zip」が抽出され、抽出されたファイルは「Unzipped A」というフォルダーに配置され、zipファイル「B.zip」が抽出され、抽出されたファイルは「Unzipped」というフォルダーに配置されますB」。
これが紛らわしい場合は申し訳ありません。助けていただければ幸いです。
さて、MatteKarla のスニペットを使用して編集した後、次のようになりました。
foreach (string file in openFileDialog1.FileNames)
{
string directory = Path.GetDirectoryName(file) + @"\Unzipped " + Path.GetFileNameWithoutExtension(file);
var GetFiles = Directory.GetFiles(directory, "*.txt", SearchOption.AllDirectories).Where(s => s.EndsWith(".txt"));
foreach (string text in GetFiles)
{
MessageBox.Show("Text found", "File");
}
}
これは、作成したディレクトリで抽出されたファイルから .txt ファイルを検索し、完全に機能します。これが適切な方法なのか、それとももっと効率的な方法があるのか 疑問に思っていましたか?