C#用foreach确定遍历某一文件夹下的文件顺序
引用
using System.IO;
方法
void GetAllFiles(string dir,List allFiles)
{
DirectoryInfo di = new DirectoryInfo(dir);
if (!di.Exists) return;//如果目录不存在,退出
var currentDirFiles = di.GetFiles().Select(p => p.Name);//获取当前目录所有文件
allFiles.AddRange(currentDirFiles);//将当前目录文件放到allFiles中
var currentDirSubDirs = di.GetDirectories().ToList();//获取子目录
currentDirSubDirs.ForEach(p => GetAllFiles(p.FullName, allFiles));//将子目录中的文件放入allFiles中
}
用法
List a = new List();
GetAllFiles(@"d:\files\", a);
a里面的就是所有文件
ArrayList GetAll(DirectoryInfo dir)//搜索文件夹中的文件
{
ArrayList FileList = new ArrayList();
FileInfo[] allFile = dir.GetFiles();
foreach (FileInfo fi in allFile)
{
FileList.Add(fi.Name);
}
DirectoryInfo[] allDir= dir.GetDirectories();
foreach (DirectoryInfo d in allDir)
{
GetAll(d);
}
return FileList;
}
DirectoryInfo d = new DirectoryInfo(@"F:\");
ArrayList Flst= GetAll(d);
//根据最后写入日期排序
var dirs = from d in Directory.GetFiles(@"d:\", "*.*")
orderby Directory.GetLastWriteTime(d)
select d;
//遍历排序结果
dirs.ToList().ForEach(x => MessageBox.Show(x));
你要自己定义如何排序(见下面的DateComparer),然后把得到的文件数组排一下序:
class DateComparer : IComparer
{
public int Compare(object info1, object info2)
{
return DateTime.Compare(((FileSystemInfo)info1).LastWriteTime,
((FileSystemInfo)info2).LastWriteTime);
}
}
你自己的代码:
IComparer dateComparer = new DateComparer();
FileSystemInfo[] infos = mydir.GetFileSystemInfos();
Array.Sort(infos, dateComparer);
foreach (FileSystemInfo fsi in infos)
{ }
注意你得到的FileSystemInfo里面可能既有文件又有文件夹的。
获取fsi的创建时间,然后进行排序
记得是按照字母顺序
杨珠来喜: 不对!!可以这样:foreach (DictionaryEntry de in hashTable){ fuck( de.Key.ToString() ); // 键处理 fuck( de.Value.ToString() ); //值处理 } 还可以这样:System.Collections.IDictionaryEnumerator IE = hashTable.GetEnumerator(); while (IE.MoveNext()) {IE.Key.ToString(); IE.Value.ToString(); }
襄汾县13072668839: C#中foreach语句的作用? - ?
杨珠来喜: C#中foreach在书写上比for简单得多,作用是遍历数组的全部元素,但是没有循环变量,需要控制循环次数或记录循环次数的地方不如for. 具体使用参考代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17usingSystem; publicclassjb51demo ...
襄汾县13072668839: C#中,如何遍历一个dictionary - ?
杨珠来喜: 应该是KeyValuePair<T,V>吧.如果你使用的是C#3.0可以直接使用var进行遍历.Dictionary<string, object> ds = new Dictionary<string, object>(); foreach (KeyValuePair<string ,object> item in ds) { ...... }
襄汾县13072668839: c#中如何使用foreach语句? - ?
杨珠来喜: foreach(类型 任意变量名 in 此类型集合) {//处理任意变量名 }
襄汾县13072668839: C# 数组的遍历使用方法 使用foreach 吗 该如何使用.为什么下面的代码中b不存在 , 该如何使用?
杨珠来喜: 遍历数组用foreach是不错的方法, 如果要遍历输出a数组中的元素的话,第四行foreach(int b in a); foreach()后面不应该有引号,就像for(int i=0;i<5;i++);后面有分号的话你这个循环就没有意义的. 把分号去掉,或者改为 foreach (int b in a...
襄汾县13072668839: c# listView表怎么做遍历啊???有没有详细的语句啊??谢谢 - ?
杨珠来喜: 您好,作为遍历,在C#当中通常是用foreach foeach(ListViewItem item in listView.Items) {Read the item; } 这样很方便
襄汾县13072668839: C#中的foreach 怎么用啊 - ?
杨珠来喜: foreach循环用于列举出集合中所有的元素,foreach语句中的表达式由关键字in隔开的两个项组成.in右边的项是集合名,in左边的项是变量名,用来存放该集合中的每个元素.该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素...
襄汾县13072668839: C#里面 foreach是什么意思?有什么用处啊! - ?
杨珠来喜: foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组.foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用.此语句的形式如下:foreach (type identifier in expression) statement ...
襄汾县13072668839: C#中for循环遍历数组?
杨珠来喜: 思路如下: 用foreach循环遍历你的DataGridView的rows属性,然后获取当前row的cells[0]的内容就可以了.
襄汾县13072668839: C#foreach遍历哈希泛型?
杨珠来喜: 比如说Dictionary<string,student>s//前面是键的类型,后面是对象的类型student,s是集合的名称 foreach (student n in s ) { student f=n; cw(f.name);//不能直接除数整个对象,智能输出里面的某个键,比如说姓名 } 遍历键 foreach (string n in s.keys ) { string f=n; cw(f); }//这样输出的直接是键值