本文整理汇总了C#中String.AsDirectory方法的典型用法代码示例。如果您正苦于以下问题:C# String.AsDirectory方法的具体用法?C# String.AsDirectory怎么用?C# String.AsDirectory使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类String
的用法示例。
在下文中一共展示了String.AsDirectory方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CopyToIfNewer
//public static IEnumerable<String> GetAllFileNames(this DirectoryInfo di, String searchPattern = null, Boolean allSub = true)
//{
// var root = di.FullName.GetFullPath().EnsureEnd("\\");
// if (String.IsNullOrEmpty(searchPattern)) searchPattern = "*";
// var opt = allSub ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
// foreach (var pattern in searchPattern.Split(";", "|"))
// {
// foreach (var item in di.GetFiles(pattern, opt))
// {
// yield return item.FullName.TrimStart(root);
// }
// }
//}
///// <summary>从指定目录更新本目录的文件</summary>
///// <param name="di"></param>
///// <param name="src"></param>
///// <param name="searchPattern"></param>
///// <param name="allSub"></param>
///// <returns></returns>
//public static Int32 UpdateFrom(this DirectoryInfo di, String src, String searchPattern = null, Boolean allSub = true)
//{
// if (di == null || String.IsNullOrEmpty(di.FullName)) return 0;
// if (!String.IsNullOrEmpty(src) || !Directory.Exists(src)) return 0;
// var root = di.FullName.GetFullPath().EnsureEnd("\\");
// if (String.IsNullOrEmpty(searchPattern)) searchPattern = "*";
// var opt = allSub ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
// var count = 0;
// foreach (var pattern in searchPattern.Split(";"))
// {
// foreach (var item in Directory.GetFiles(root, pattern, opt))
// {
// var srcFile = src.CombinePath(item.TrimStart(root));
// try
// {
// File.Copy(srcFile, item, true);
// count++;
// }
// catch { }
// }
// }
// return count;
//}
/// <summary>对比源目录和目标目录,复制双方都存在且源目录较新的文件</summary>
/// <param name="di">源目录</param>
/// <param name="destDirName">目标目录</param>
/// <param name="exts">文件扩展列表。比如*.exe;*.dll;*.config</param>
/// <param name="allSub">是否包含所有子孙目录文件</param>
/// <param name="callback">复制每一个文件之前的回调</param>
/// <returns></returns>
public static Int32 CopyToIfNewer(this DirectoryInfo di, String destDirName, String exts = null, Boolean allSub = false, Action<String> callback = null)
{
var dest = destDirName.AsDirectory();
if (!dest.Exists) return 0;
var count = 0;
// 目标目录根,用于截断
var root = dest.FullName.EnsureEnd(Path.DirectorySeparatorChar.ToString());
foreach (var item in dest.GetAllFiles(exts, allSub))
{
var name = item.FullName.TrimStart(root);
var fi = di.FullName.CombinePath(name).AsFile();
//fi.CopyToIfNewer(item.FullName);
if (fi.Exists && item.Exists && fi.LastWriteTime > item.LastWriteTime)
{
if (callback != null) callback(name);
fi.CopyTo(item.FullName, true);
count++;
}
}
return count;
}