问题描述
求大牛帮解决下这个疑难,谢谢。怎么判断文件夹下子文件夹的文件名是否相同?如果有相同的就删除,只保留一个修改时间为最后的文件。图示:我最终结果就是想把A1子文件夹的a.txtb.txt删除掉。条件是A2子文件夹的修改日期大于A1子文件夹的文件下面是我自己写的一段查找文件的代码,想把判断条件写进foreach(FileInfofinDir.GetFiles("*.*",SearchOption.TopDirectoryOnly)){if...}publicvoidFindFile(stringsSourcePath){//在指定目录及子目录下查找文件,在list中列出子目录及文件DirectoryInfoDir=newDirectoryInfo(sSourcePath);DirectoryInfo[]DirSub=Dir.GetDirectories();//stringStrerr=".err";if(DirSub.Length<=0){foreach(FileInfofinDir.GetFiles("*.*",SearchOption.TopDirectoryOnly))//查找文件{//if(f.ToString().Contains(Strerr))//{//f.Delete();//}this.listBox1.Items.Add(f.ToString());}}intt=1;foreach(DirectoryInfodinDirSub)//查找子目录{FindFile(Dir+@""+d.ToString());if(t==1){foreach(FileInfofinDir.GetFiles("*.*",SearchOption.TopDirectoryOnly))//查找文件{//this.listBox1.Items.Add(Dir+@""+f.ToString());this.listBox1.Items.Add(f.ToString());}t=t+1;}}}
解决方案
解决方案二:
通过Directory.GetFiles获取两个文件夹的FileName数组string[]然后通过并集获取同时再两个文件夹里都有的同名文件arr1.Intersect(arr2)最后循环结果集合,比较同名文件在两个文件夹下的File.GetLastWriteTime
解决方案三:
引用1楼starfd的回复:
通过Directory.GetFiles获取两个文件夹的FileName数组string[]然后通过并集获取同时再两个文件夹里都有的同名文件arr1.Intersect(arr2)最后循环结果集合,比较同名文件在两个文件夹下的File.GetLastWriteTime
这位兄弟能写下代码吗?我自己初学的,不是很懂。数组那章还没看到
解决方案四:
staticvoidFileCompare(stringdirectory1,stringdirecotry2){vararr1=Directory.GetFiles(directory1).Select(x=>Path.GetFileName(x));vararr2=Directory.GetFiles(direcotry2).Select(x=>Path.GetFileName(x));foreach(varstrinarr1.Intersect(arr2)){DateTimedt1=File.GetLastWriteTime(Path.Combine(directory1,str));DateTimedt2=File.GetLastWriteTime(Path.Combine(direcotry2,str));//比较两个的时间}}
解决方案五:
引用3楼starfd的回复:
staticvoidFileCompare(stringdirectory1,stringdirecotry2){vararr1=Directory.GetFiles(directory1).Select(x=>Path.GetFileName(x));vararr2=Directory.GetFiles(direcotry2).Select(x=>Path.GetFileName(x));foreach(varstrinarr1.Intersect(arr2)){DateTimedt1=File.GetLastWriteTime(Path.Combine(directory1,str));DateTimedt2=File.GetLastWriteTime(Path.Combine(direcotry2,str));//比较两个的时间}}
顶
解决方案六:
基本上就是楼上的做法
解决方案七:
引用3楼starfd的回复:
staticvoidFileCompare(stringdirectory1,stringdirecotry2){vararr1=Directory.GetFiles(directory1).Select(x=>Path.GetFileName(x));vararr2=Directory.GetFiles(direcotry2).Select(x=>Path.GetFileName(x));foreach(varstrinarr1.Intersect(arr2)){DateTimedt1=File.GetLastWriteTime(Path.Combine(directory1,str));DateTimedt2=File.GetLastWriteTime(Path.Combine(direcotry2,str));//比较两个的时间}}
晚点尝试下,谢谢你。