110,536
社区成员
发帖
与我相关
我的任务
分享
static void GetFiles(string directory, List<string> paths)
{
paths.AddRange(Directory.GetFiles(directory));
var directories = Directory.GetDirectories(directory);
DirectoryInfo dir = new DirectoryInfo(AllPath);
FileSystemInfo[] files = dir.GetFileSystemInfos();
foreach (FileSystemInfo FSInfo in files)
{
FileInfo file = FSInfo as FileInfo;
if (file != null)
{
if (files.ContainsKey(file.Name))
{
if (files[file.Name] < file.CreationTime)
{
files[file.Name] =file.CreationTime;
}
}
else
{
files.add(file.Name,file.CreationTime)
}
}
}
if(directories!=null && directories.Length>0)
{
foreach (var dir in directories)
{
GetFiles(dir, paths);
}
}
}
调用方法:
List<string> paths = new List<string>();
Dictionary<string, DateTime> files = new Dictionary<string, DateTime>;
GetFiles("你要获取的物理目录", paths);
static void GetFiles(string directory, List<string> paths)
{
paths.AddRange(Directory.GetFiles(directory));
var directories = Directory.GetDirectories(directory);
if(directories!=null && directories.Length>0)
{
foreach (var dir in directories)
{
GetFiles(dir, paths);
}
}
}
好人做到底,递归方法也写了
调用方法就是
List<string> paths = new List<string>();
GetFiles("你要获取的物理目录", paths);
List<string> paths;//怎么递归获取这里就不写了
var query = from p in paths
group p by Path.GetFileName(p).ToLower() into g
where g.Count()>1
select g;
foreach(var g in query)
{
foreach(var filePath in g.OrderByDescending(x=>File.GetCreationTime(x)).Skip(1))//最后创建的不删除
{
File.Delete(filePath);
}
}
public void FindFile(string sSourcePath)
{
DirectoryInfo Dir = new DirectoryInfo(sSourcePath);
DirectoryInfo[] DirSub = Dir.GetDirectories();
// string Strerr=".err";
if (DirSub.Length <= 0)
{
foreach (FileInfo f in Dir.GetFiles("*.*", SearchOption.TopDirectoryOnly))
{
//if (f.ToString().Contains(Strerr))
//{
// f.Delete();
//}
}
}
static void FileCompare(string directory1,string direcotry2)
{
var arr1 = Directory.GetFiles(directory1).Select(x => Path.GetFileName(x));
var arr2 = Directory.GetFiles(direcotry2).Select(x => Path.GetFileName(x));
foreach (var str in arr1.Intersect(arr2))
{
DateTime dt1 = File.GetLastWriteTime(Path.Combine(directory1, str));
DateTime dt2 = File.GetLastWriteTime(Path.Combine(direcotry2, str));
//比较两个的时间
}
}