网站一个目录,要定时备份
文件比较大,想实现增量修改备份
我写了一个,但是有些问题如下 //copyPath 需要备份的文件,toPath目标
public static void Copy(string copyPath, string toPath)
{
if (toPath[toPath.Length - 1] != Path.DirectorySeparatorChar)
{
toPath += Path.DirectorySeparatorChar;
}
if (!Directory.Exists(toPath))//
{
Directory.CreateDirectory(toPath);
}
string[] fileList = Directory.GetFileSystemEntries(copyPath);
foreach (string file in fileList)//
{
string[] copyfiles = Directory.GetFiles(file);//
foreach (string tofile in copyfiles)//
{
//这里,应该是,当前要复制的文件,是否在要复制大文件中
//Exists是判断目录的,那个方法可以判断文件
//就是D:\Object\a.txt,是否在D:\Copy\a.txt
if (!Directory.Exists(tofile))
{
//没有就复制出来
//这里文件结构有问题
//我想得到的是,
//D:\Object\a.txt,copyTO D:\Copy\a.txt
//而不是
//D:\Object\a.txt,copyTO D:\Copy\Object\a.txt
File.Copy(tofile, toPath + Path.GetFileName(tofile), true);
}
else
{
//文件存在要对比时间,这样写不好吧!文件目录结构比较多
var d = new FileInfo(tofile).LastWriteTime;
var dt = new FileInfo(toPath+tofile).LastWriteTime;
if(d>dt)
{
File.Copy(tofile, toPath + Path.GetFileName(tofile), true);
}
}
}
}
}
文件比较大,想实现增量修改备份
我写了一个,但是有些问题如下 //copyPath 需要备份的文件,toPath目标
public static void Copy(string copyPath, string toPath)
{
if (toPath[toPath.Length - 1] != Path.DirectorySeparatorChar)
{
toPath += Path.DirectorySeparatorChar;
}
if (!Directory.Exists(toPath))//
{
Directory.CreateDirectory(toPath);
}
string[] fileList = Directory.GetFileSystemEntries(copyPath);
foreach (string file in fileList)//
{
string[] copyfiles = Directory.GetFiles(file);//
foreach (string tofile in copyfiles)//
{
//这里,应该是,当前要复制的文件,是否在要复制大文件中
//Exists是判断目录的,那个方法可以判断文件
//就是D:\Object\a.txt,是否在D:\Copy\a.txt
if (!Directory.Exists(tofile))
{
//没有就复制出来
//这里文件结构有问题
//我想得到的是,
//D:\Object\a.txt,copyTO D:\Copy\a.txt
//而不是
//D:\Object\a.txt,copyTO D:\Copy\Object\a.txt
File.Copy(tofile, toPath + Path.GetFileName(tofile), true);
}
else
{
//文件存在要对比时间,这样写不好吧!文件目录结构比较多
var d = new FileInfo(tofile).LastWriteTime;
var dt = new FileInfo(toPath+tofile).LastWriteTime;
if(d>dt)
{
File.Copy(tofile, toPath + Path.GetFileName(tofile), true);
}
}
}
}
}
解决方案 »
- asp.net 怎么应用EXTJs?
- 怎么获取从另外个ASP页面传来的不定的值的参数
- gridview 设置颜色
- 再发,关于浏览器显示 url问题????
- 关于前台页面绑定cs后台代码页方法的问题
- 请教一个动态组装属性的一个问题(100)解决马上给分,在线等
- ******是谁动了我的Cookie????
- 我有一组文本框是前台产生的但是我后台如何接收它们不是服务器控件数量由另一个文本框决定【动态产生??个文本框】
- 第一次写代码居然就错了,诸位朋友帮忙看看代码问题出在哪?谢谢了
- 我的TREEVIEW 在本机调试是好的(树是正常的),怎么到客户端看文字乱成一团了(不正常了)。???
- 在客户端如何隐藏gridview的footerrow?
- *****高分求正则
//srcPath原始路径
//aimPath目标文件夹
public static void CopyDir(string srcPath, string aimPath)
{
try
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 判断目标目录是否存在如果不存在则新建之
if (!Directory.Exists(aimPath))
Directory.CreateDirectory(aimPath);
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
//如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
//string[] fileList = Directory.GetFiles(srcPath);
string[] fileList = Directory.GetFileSystemEntries(srcPath);
//遍历所有的文件和目录
foreach (string file in fileList)
{
//先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
if (Directory.Exists(file))
CopyDir(file, aimPath + Path.GetFileName(file));
//否则直接Copy文件
else
File.Copy(file, aimPath + Path.GetFileName(file), true);
}
}
catch (Exception ee)
{
throw new Exception(ee.ToString());
}
}
{
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
} public enum CopyType
{
File,
Directory
} /// <summary>
/// 将fromDir文件夹下的所有文件及文件夹Copy至toDir下
/// </summary>
/// <param name="fromDir">来源(物理路径)</param>
/// <param name="toDir">目的地(物理路径)</param>
/// <param name="copyType">要复制的类型(注意:可以指定只复制文件夹结构,但指定复制文件则必定复制文件夹结构)</param>
/// <param name="noNeedCopyRules">不需要复制的规则(名字正则)</param>
/// <param name="isNoNeedCopy">是否存在不需要复制的文件或文件夹,true为不需要复制</param>
public static void Copy(string fromDir, string toDir, CopyType copyType, string noNeedCopyRules,bool isNoNeedCopy)
{
if (Directory.Exists(fromDir))
{
string[] childDir = Directory.GetDirectories(fromDir);
if (childDir != null && childDir.Length > 0)
{
foreach (string tS in childDir)
{
if (isNoNeedCopy && System.Text.RegularExpressions.Regex.IsMatch(tS, noNeedCopyRules))
{
continue;
} Copy(tS, toDir + tS.Substring(fromDir.Length), copyType, noNeedCopyRules, isNoNeedCopy);
}
}
else
{
toDir.CreateDirectory();
} if (copyType == CopyType.File)
{
string[] fi = Directory.GetFiles(fromDir);
if (fi != null && fi.Length > 0)
{
foreach (string f in fi)
{
if (isNoNeedCopy && System.Text.RegularExpressions.Regex.IsMatch(f, noNeedCopyRules))
{
continue;
} string toFilePath = toDir + f.Substring(fromDir.Length); if (File.Exists(toFilePath))
{
File.Delete(toFilePath);
} File.Copy(f, toFilePath);
}
}
}
}
}
再赋值路径
最后判断(路径+文件名)是否存在,不存在就复制;反之覆盖。