C#フォルダをzip形式にパッケージ(フォルダとサブフォルダの下にあるすべてのファイルを含む)
3672 ワード
以前はブログが苦手でしたが、今回はブログ園にも登録して遊びました.でも内容がないので、何か追加したいですね.
最近マイクロソフトで開発されたいくつかのツールは、ファイル操作/IOに関連していることが多いので、この2、3日整理して、皆さんと共有できるかもしれないものを貼って、C#の初心者に役立つことを望んでいます.(マイクロソフトの学習者支援サイトCode smaples from Microsoftにアクセスできるコードの例:http://1code.codeplex.com 、マイクロソフトのAll-in-onecode frameworkをダウンロード ,これは私が最近Microsoftで開発を担当している開発者のためのツールで、学習者の参考になるサンプルコードがたくさん検索できます.)
C#パッケージzipファイルは、既存のサードパーティdllを呼び出すことができ、半分の労力で、dllは完全に無料で、ダウンロードアドレス:SharpZipLib
解凍をダウンロードした後、ICSharpCode.SharpZipLib.dllを現在のプロジェクトのディレクトリにコピーし(サボっていれば、現在のプロジェクトのbinDebugディレクトリの下に直接コピーできます)、VS開いているプロジェクト参照にICSharpCode.SharpZipLib.dllを右クリックして追加
そして、VSで開いている項目の上で右クリックして新しいクラスを作り、ZipHelper.csと名付けて、クラスの中のすべてのcodeを空にして、以下のコードをコピーして、貼り付けます.
使用方法は、using ZipOneCode.ZipProviderを外部参照した後、ZipHelper.CreateZip(@「D:Tempforzip」@「D:Temp 2forzip.zip」)を呼び出すのと同様です.
注意呼び出しの前に、ソースファイルパスが存在するかどうかなど、いくつかの異常状況の判断に注意することを考慮します.
転載先:https://www.cnblogs.com/leco/archive/2010/11/18/1881301.html
最近マイクロソフトで開発されたいくつかのツールは、ファイル操作/IOに関連していることが多いので、この2、3日整理して、皆さんと共有できるかもしれないものを貼って、C#の初心者に役立つことを望んでいます.(マイクロソフトの学習者支援サイトCode smaples from Microsoftにアクセスできるコードの例:http://1code.codeplex.com 、マイクロソフトのAll-in-onecode frameworkをダウンロード ,これは私が最近Microsoftで開発を担当している開発者のためのツールで、学習者の参考になるサンプルコードがたくさん検索できます.)
C#パッケージzipファイルは、既存のサードパーティdllを呼び出すことができ、半分の労力で、dllは完全に無料で、ダウンロードアドレス:SharpZipLib
解凍をダウンロードした後、ICSharpCode.SharpZipLib.dllを現在のプロジェクトのディレクトリにコピーし(サボっていれば、現在のプロジェクトのbinDebugディレクトリの下に直接コピーできます)、VS開いているプロジェクト参照にICSharpCode.SharpZipLib.dllを右クリックして追加
そして、VSで開いている項目の上で右クリックして新しいクラスを作り、ZipHelper.csと名付けて、クラスの中のすべてのcodeを空にして、以下のコードをコピーして、貼り付けます.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Core;
namespace ZipOneCode.ZipProvider
{
public class ZipHelper
{
///
///
///
///
///
public static void CreateZip(string sourceFilePath, string destinationZipFilePath)
{
if (sourceFilePath[sourceFilePath.Length - 1] != System.IO.Path.DirectorySeparatorChar)
sourceFilePath += System.IO.Path.DirectorySeparatorChar;
ZipOutputStream zipStream = new ZipOutputStream(File.Create(destinationZipFilePath));
zipStream.SetLevel(6); // 0-9
CreateZipFiles(sourceFilePath, zipStream, sourceFilePath);
zipStream.Finish();
zipStream.Close();
}
///
///
///
///
/// zip ( D:\WorkSpace\a.zip), .zip
///
private static void CreateZipFiles(string sourceFilePath, ZipOutputStream zipStream, string staticFile)
{
Crc32 crc = new Crc32();
string[] filesArray = Directory.GetFileSystemEntries(sourceFilePath);
foreach (string file in filesArray)
{
if (Directory.Exists(file)) // ,
{
CreateZipFiles(file, zipStream, staticFile);
}
else // ,
{
FileStream fileStream = File.OpenRead(file);
byte[] buffer = new byte[fileStream.Length];
fileStream.Read(buffer, 0, buffer.Length);
string tempFile = file.Substring(staticFile.LastIndexOf("\\") + 1);
ZipEntry entry = new ZipEntry(tempFile);
entry.DateTime = DateTime.Now;
entry.Size = fileStream.Length;
fileStream.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
zipStream.PutNextEntry(entry);
zipStream.Write(buffer, 0, buffer.Length);
}
}
}
}
}
使用方法は、using ZipOneCode.ZipProviderを外部参照した後、ZipHelper.CreateZip(@「D:Tempforzip」@「D:Temp 2forzip.zip」)を呼び出すのと同様です.
注意呼び出しの前に、ソースファイルパスが存在するかどうかなど、いくつかの異常状況の判断に注意することを考慮します.
転載先:https://www.cnblogs.com/leco/archive/2010/11/18/1881301.html