应该不会慢的,因为
(1)GetFiles是在文件定位表中读取,就如同在一个物理索引的数据库表中读取一样。
(2)字符数组操作中只有对象创建和销毁,没有任何数据拷贝,所以也不会太慢
如果觉得在数组中查找比较慢,可以按首字分类,用GetFiles("c:\\","a*")之类的命令就可以。
(1)GetFiles是在文件定位表中读取,就如同在一个物理索引的数据库表中读取一样。
(2)字符数组操作中只有对象创建和销毁,没有任何数据拷贝,所以也不会太慢
如果觉得在数组中查找比较慢,可以按首字分类,用GetFiles("c:\\","a*")之类的命令就可以。
public static string[] GetFiles(string path);
public static string[] GetFiles(string path, string searchPattern);
即使字符数组的操作不拷贝数据,但是那么大的数组,内存的消耗就大了吧?还想再问问,C#对数组元素个数有要求吗?fengqingyang1979(风轻扬)
那个第二个参数我明白了。但是如果我的文件名可能以一些符号开头,而不是一定以字母开头呢?如果我想继续用这个带两个参数的方法的话,应该怎么做?把所有ASCII开头的都过一遍吗?
我想还是用MagicCondom(可怜的套套,别人爽了,我却要被抛弃了)的方法吧,就是遍历所有的的文件名.那现在又有一个问题了:就是我现在遍历万所有字母开头的文件以后,如何得到其他没有被访问过的文件名?
谢谢!
最近没什么时间上网,您要是看了这个帖子,麻烦帮忙顶,谢谢!
假设你有10000个文件,每个文件名20字节,已经很大了吧。
就是200000,也就200K,这很多吗?
速度问题上面已经有人说过了。
我做了一个实验,我有一个文件夹下有74个文件。
我用System.IO.Directory.GetFiles(path);
循环200次,就是读了大概15000次。
每次的结果我都保存在一个数组中没销毁。
耗时0.3125秒。
所以应该没问题了吧。
我的System32下有2387个文件,同上的方法,0.0625秒。
再分析是否对他进行处理。
另外可以加上线程。
下面是一个使用的例子。
http://blog.csdn.net/zhzuo/archive/2004/06/15/22038.aspx
http://blog.csdn.net/zhzuo/archive/2004/06/15/22039.aspx