たとえば、2016という名前のフォルダがあり、そのフォルダ内にフォルダJan-Decと他のファイルがある場合、それらのフォルダを一緒に2016.zipに圧縮する方法はありますか?私が試みたものは、フォルダ内のすべてのファイルを一緒に圧縮しますが、一緒にジッパーしたいだけです。フォルダ内に他のファイルはありません。C#でフォルダをまとめて圧縮することはできますか?
基本的には、それはそれで、それぞれのファイルを持つフォルダのそれぞれと2016.zip 1月 - 12月のフォルダではなく、ジップで空のフォルダを2016.zipだろう。
次のコードは00で始まるファイルではなくフォルダをつかみます。
// Where the files are located
string strStartPath = txtTargetFolder.Text;
// Where the zip file will be placed
string strZipPath = @"C:\Users\smelmo\Desktop\testFinish\" + strFileNameRoot + "_" + txtDateRange1.Text.Replace(@"/", "_") + "_" + txtDateRange2.Text.Replace(@"/", "_") + ".zip";
if(File.Exists(strZipPath))
{
File.Delete(strZipPath);
}
using (ZipArchive archive = ZipFile.Open(strZipPath, ZipArchiveMode.Create))
{
foreach (FileInfo file in new DirectoryInfo(strStartPath).GetFiles())
{
if (file.Name.StartsWith("00"))
{
var entry = archive.CreateEntryFromFile(Path.Combine(file.Directory.ToString(), file.Name), file.Name);
}
}
}
私もtypeof()
を使用して試してみましたが、それは、フォルダ、または何かをつかむしません。
using (ZipArchive archive = ZipFile.Open(strZipPath, ZipArchiveMode.Create))
{
foreach (FileInfo file in new DirectoryInfo(strStartPath).GetFiles())
{
Type t = file.GetType();
if (t.Equals(typeof(Directory)))
{
var entry = archive.CreateEntryFromFile(Path.Combine(file.Directory.ToString(), file.Name), file.Name);
}
}
EDIT:は、次のフォルダ構造を明瞭
空のフォルダのジップが必要ですか? –
@ CodyG.Noの場合、Jan-Decフォルダにはファイルがあります。私はJan-Decフォルダを一緒に圧縮したいと思うでしょう。したがって、2016.zipを開くとJan-Decフォルダが作成され、それぞれのファイルがあるフォルダが作成されます。 – smelmo
'DirectoryInfo(strStartPath).GetDirectories'を試してみませんか? '.GetFiles()'はディレクトリを返さないでしょう... –