62,071
社区成员
发帖
与我相关
我的任务
分享
string strDirPath = Environment.GetEnvironmentVariable("TEMP")+"\\"
+ DateTime.Now.ToString("yyyMMddHHmmssfff");
Directory.CreateDirectory(strDirPath);
DirectoryInfo objDir = new DirectoryInfo(strDirPath);
foreach (string strFileName in categoryIDList)
{
FileInfo objFile = new FileInfo(strFileName);
if (objFile.Exists == true)
{
objFile.CopyTo(objDir.FullName +"\\"+ objFile.Name);
}
}
// Zipファイルの作成
string strZipFile= WebConfig.ApplicationPath + ConfigurationManager.
AppSettings["ZipFilePath"] + DateTime.Now.ToString("yyyMMddHHmmssfff") + ".zip";
ZipFile objZipFile = new ZipFile();
objZipFile.ZipMain(objDir.FullName, strZipFile);
///---------------------------------------------------------------------------
/// 機能ID :ZipFile
///
/// 機能名 :ファイルの圧縮
///
/// システム :バッチもばっちり
///
/// 作成日 :2008年9月3日
///
/// 作成者 :
///
/// 機能説明 :ファイルの圧縮する。
///---------------------------------------------------------------------------
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
namespace CommonPrj
{
public class ZipFile
{
///--------------------------------------------------------------------------
///
/// 機能 :ファイルの圧縮操作
///
/// 返り値 :なし
///
/// 引き数 :p_strFile - ファイルのパス
/// :p_strZip - 出力ファイルのパス
///
/// 作成日 :2008年9月3日
///
/// 作成者 :
///
/// 機能説明 :ファイルの圧縮操作を行う。
///
/// 注意事項 :なし
///
///--------------------------------------------------------------------------
public void ZipMain(string p_strFile, string p_strZip)
{
if (p_strFile[p_strFile.Length - 1] != Path.DirectorySeparatorChar)
{
p_strFile += Path.DirectorySeparatorChar;
}
// ファイルの圧縮操作
ZipOutputStream s = new ZipOutputStream(File.Create(p_strZip));
s.SetLevel(6);
zip(p_strFile, s, p_strFile);
s.Finish();
s.Close();
}
///--------------------------------------------------------------------------
///
/// 機能 :ファイルの圧縮操作
///
/// 返り値 :なし
///
/// 引き数 :p_strFile - ファイルのパス
/// :OutStream - IOStream
/// :p_strstaticFile - Staticファイル
///
/// 作成日 :2008年9月3日
///
/// 作成者 :
///
/// 機能説明 :ファイルの圧縮操作を行う。
///
/// 注意事項 :なし
///
///--------------------------------------------------------------------------
private void zip(string p_strFile, ZipOutputStream OutStream, string p_strstaticFile)
{
if (p_strFile[p_strFile.Length - 1] != Path.DirectorySeparatorChar)
{
p_strFile += Path.DirectorySeparatorChar;
}
// CRC 対象の作成
Crc32 crc = new Crc32();
// フォルダ名の取得
string[] filenames = Directory.GetFileSystemEntries(p_strFile);
foreach (string file in filenames)
{
// ファイルの存在しない場合
if (Directory.Exists(file))
{
zip(file, OutStream, p_strstaticFile);
}
// ファイルの存在しない場合
else
{
FileStream fs = File.OpenRead(file);
// ファイルの圧縮操作
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string tempfile = file.Substring(p_strstaticFile.LastIndexOf("\\") + 1);
ZipEntry entry = new ZipEntry(tempfile);
entry.DateTime = DateTime.Now;
entry.Size = fs.Length;
fs.Close();
crc.Reset();
crc.Update(buffer);
entry.Crc = crc.Value;
OutStream.PutNextEntry(entry);
OutStream.Write(buffer, 0, buffer.Length);
}
}
}
}
}