您的位置:首页 > 编程语言 > C#

c# 从指定目录批量压缩文件

2012-06-19 00:00 621 查看
public static string GetFoldAll(string Path)

{

string str = "";

DirectoryInfo thisOne = new DirectoryInfo(Path);

DirectoryInfo[] subDirectories = thisOne.GetDirectories();//获得目录

for (int i = 0; i < subDirectories.Length; i++)

{

str = ListTreeShow(subDirectories[i], 0, str);

}

return str;

}

/// <summary>

/// 获取指定文件夹下所有子目录及文件函数

/// </summary>

/// <param name="theDir">指定目录</param>

/// <param name="nLevel">默认起始值,调用时,一般为0</param>

/// <param name="Rn">用于迭加的传入值,一般为空</param>

/// <returns></returns>

public static string ListTreeShow(DirectoryInfo theDir, int nLevel, string Rn)//递归目录 文件

{

try

{

DirectoryInfo[] subDirectories = theDir.GetDirectories();//获得目录

foreach (DirectoryInfo dirinfo in subDirectories)

{

FileInfo[] fileInfo = dirinfo.GetFiles(); //目录下的文件

foreach (FileInfo fInfo in fileInfo)

{

string filepath = dirinfo.FullName + "\\" + fInfo.Name;

//时间部分判断 文件是否删除

string suffix = "";

DateTime dt = DateTime.Now;

string[] fielName = fInfo.Name.Split('.');

string linedate = fielName[0].Split('_')[fielName[0].Split('_').Length - 1];//获取文件名称中的时间部分

if (fielName.Length > 2)

{

suffix = fielName[2];

}

else

{

suffix = fielName[1];

}

if (linedate == "rev")

{

dt = DateTime.ParseExact(fielName[0].Split('_')[fielName[0].Split('_').Length - 2], "yyyyMMdd", null);

}

else

{

dt = DateTime.ParseExact(linedate, "yyyyMMdd", null);

}

DateTime time = DateTime.Now;

if (dt < time.AddYears(-1))//以当前时间为基础,早于一年的报表删掉

{

DeleteFile(filepath);

}

if (dt.AddDays(1) < time)

{

if (suffix == "txt" || suffix == "csv")

{

ZipIt(filepath);

DeleteFile(filepath);

}

}

}

Rn = ListTreeShow(dirinfo, nLevel + 1, Rn);

}

}

catch (Exception ex)

{

log.Info(ex);

}

return Rn;

}

private static String ZipIt(String filename)

{

ZipFile zipfile = new ZipFile(System.Text.Encoding.Default);

string zipname = "";

try

{

//压缩文件

zipfile.AddFile(filename, "");

zipfile.Save(filename + ".zip");

Console.WriteLine("zip the file: {0} success!", filename);

string[] fname = zipfile.Name.Split('\\');

zipname = fname[fname.Length - 1];

}

catch (Exception ex)

{

log.Info(ex);

Console.WriteLine("error occurred! ex={0}", ex);

//throw ex;

}

log.Info("文件压缩成功,文件名为:" + filename);

return zipname;

}

private static void DeleteFile(string txtedfolder)

{

//foreach (string file in Directory.GetFiles(zipedfolder))

//{

try

{

File.Delete(txtedfolder);

log.Info("成功删除" + txtedfolder);

}

catch (Exception ex)

{

Console.WriteLine(ex);

log.Info("删除文件失败:" + ex);

}

//

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#批量压缩文件