ZIP压缩文件夹中上个月的文件,并将备份文件拷贝到服务器

遍历文件夹的子文件夹下的所有文件,将上个月的文件集中到一起,然互压缩,并copy到服务器的映射磁盘。

static void Main(string[] args)
{
//原始文件存放的位置
DirectoryInfo theFolder = new DirectoryInfo(@"E:\TestFloder");
//将文件拷贝到该文件夹下
string targetPath = @"D:\test";
DirectoryInfo[] dirInfo = theFolder.GetDirectories();
//遍历文件夹下的子文件夹
foreach (DirectoryInfo folder in dirInfo)
{
FileInfo[] filesInfo = folder.GetFiles();
//遍历子文件夹下的文件
foreach (FileInfo file in filesInfo)
{
//将上个月的文件拷贝到
if (file.CreationTime.ToShortDateString().Equals(DateTime.Now.AddMonths(-1).ToShortDateString()))
{
if (!CopyFile(file, targetPath))
{
//log 复制文件失败
}
else
{
file.Delete();
}
}
}
}

string zipFilePath = @"D:\" + DateTime.Now.AddMonths(-1).ToString("yyyyMMdd") + ".zip";
string remotePath = @"\\127.1.0.0" + @"D:\" + DateTime.Now.AddMonths(-1).ToString("yyyyMMdd") + ".zip";

if (!ZipFiles(targetPath, zipFilePath))
{
//压缩文件失败
}
else
{
//压缩文件成功
//将压缩后的文件拷贝到映射的服务器磁盘
if (!CopyFile(zipFilePath, remotePath))
{
//Copy失败
}
else
{
//copy成功
//删除原有的
File.Delete(zipFilePath);
}

}

}

/// <summary>
/// 移动文件到指定目录
/// </summary>
/// <param name="file">文件</param>
/// <param name="targetPath">目标路径</param>
/// <returns></returns>
public static bool CopyFile(FileInfo file, string targetPath)
{
try
{
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
}
targetPath = targetPath + @"\" + file.Name;

File.Copy(file.FullName, targetPath, true);
return true;
}
catch (Exception)
{
return false;
}
}

/// <summary>
/// 移动文件到指定目录
/// </summary>
/// <param name="filePath"></param>
/// <param name="targetPath"></param>
/// <returns></returns>
public static bool CopyFile(string filePath, string targetPath)
{
try
{
File.Copy(filePath, targetPath, true);
return true;
}
catch (Exception)
{
return false;
}
}

/// <summary>
/// 压缩文件
/// </summary>
/// <param name="folderPath">被压缩文件夹路径</param>
/// <param name="zipPath">压缩文件路径</param>
/// <returns></returns>
public static bool ZipFiles(string folderPath, string zipPath)
{
try
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
//软件7Z的安装目录
process.StartInfo.FileName = @"D:\Program Files\7-Zip\7z.exe";
process.StartInfo.Arguments = string.Format(" a -tzip {0} {1}", zipPath, folderPath);
process.Start();
//一定要等待完成后,才能删除。
process.WaitForExit();

//删除文件夹下文件
DeleteFiles(folderPath);

return true;
}
catch (Exception ex)
{
throw ex;
}
}

/// <summary>
/// 删除文件夹下文件
/// </summary>
/// <param name="folderPath">文件夹路径</param>
public static void DeleteFiles(string folderPath)
{
try
{
DirectoryInfo folder = new DirectoryInfo(folderPath);
FileInfo[] filesInfo = folder.GetFiles();
foreach (FileInfo file in filesInfo)
{
File.Delete(file.FullName);
}
//log 删除文件夹下文件成功
}
catch (Exception ex)
{
//log 删除文件夹下文件失败
throw ex;
}
}

时间: 2024-12-21 22:04:42

ZIP压缩文件夹中上个月的文件,并将备份文件拷贝到服务器的相关文章

c# -- 读取文件夹中的所有文件(备忘)

读取选取的文件夾下的所有.txt文件 private void button1_Click(object sender, EventArgs e){ if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) { string foldPath = folderBrowserDialog1.SelectedPath; MessageBox.Show("已选择文件夹:" + foldPath, "选择文件夹提示"

C#遍历指定文件夹中的所有文件(转)

原文链接:http://www.cnblogs.com/qianqianfy/archive/2009/07/08/1518974.html 1. C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName); //---遍历文件夹 foreach(DirectoryInfo NextFolder in TheFolder.GetDirectories()) this.listBox1.Items.Add(Ne

PHP遍历、删除文件夹中的所有文件

1 <?php 2 header("Content-type:text/html;charset=utf-8"); 3 4 /** 5 * getDirFile 遍历文件夹中的所有文件 6 * @param $path 7 */ 8 function getDirFile($path){ 9 //判断是否是文件夹 10 if(is_dir($path)){ 11 //判断是否打开成功 12 if($handle = opendir($path)){ 13 14 //读取文件 15

C# 读取指定文件夹中的全部文件,并按规则生成SQL语句!

本实例的目的在于: 1 了解怎样遍历指定文件夹中的全部文件 2 控制台怎样输入和输出数据 代码: using System; using System.IO; namespace ToSql{ class ToSql{ static void Main(){ string path = System.Environment.CurrentDirectory; System.Console.WriteLine("输入要读取的文件夹名"); string name = Console.Re

C#读取指定文件夹中的所有文件

C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);//遍历文件夹foreach(DirectoryInfo NextFolder in TheFolder.GetDirectories())   this.listBox1.Items.Add(NextFolder.Name);//遍历文件foreach(FileInfo NextFile in TheFolder.GetFiles())   thi

读取文件夹下所有子文件夹中的excel文件,并根据分类合并

解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独保存汇总文件,或者只保存成一个汇总文件. 场景描述:抓取了各个APP的使用数据,分散地保存在各个文件夹中.文件格式如下: 第一级分类:文件夹名 第二级分类:文件夹下xlsx文件名 第三级分类:每个xlsx文件中每行(具体的每条数据),但其中并没有该APP属于的二级分类和一级分类,需要为每条数据添加二

WPF获取读取电脑指定文件夹中的指定文件的地址

1 //保存指定文件夹中的指定文件的地址 2 3 string List<string> mListUri = new List<string>(); 4 5 //文件夹地址 6 7 string folderName = Environment.CurrentDirectory; 8 9 /// <summary> 10 /// 读取文件夹中指定文件 11 /// </summary> 12 public void LoadAllFile() 13 { 1

读取文件夹中所有的文件

class Program { static double size = 2.443438914027149; static void Main(string[] args) { if (!System.IO.Directory.Exists("Img")){ System.IO.Directory.CreateDirectory("Img"); Console.WriteLine("已创建Img目录,请把需要处理的图片放到该目录下"); Con

递归和非递归方法得到某文件夹中的全部文件和文件夹

/*******************************************************递归实现***************************************************/ /** * 获取某文件夹的所有文件 * @param filePath 获取文件的文件夹路径 * @param myFiles 保存文件的文件集合 * @return  所有的文件及文件夹 * @throws IOException */ public static Arr