应该不会慢的,因为
(1)GetFiles是在文件定位表中读取,就如同在一个物理索引的数据库表中读取一样。
(2)字符数组操作中只有对象创建和销毁,没有任何数据拷贝,所以也不会太慢
如果觉得在数组中查找比较慢,可以按首字分类,用GetFiles("c:\\","a*")之类的命令就可以。

解决方案 »

  1.   

    System.IO.Directory类中的下面两个方法中的第二个应该可以解决你的问题吧
    public static string[] GetFiles(string path);
    public static string[] GetFiles(string path, string searchPattern);
      

  2.   

    MagicCondom(可怜的套套,别人爽了,我却要被抛弃了) 
    即使字符数组的操作不拷贝数据,但是那么大的数组,内存的消耗就大了吧?还想再问问,C#对数组元素个数有要求吗?fengqingyang1979(风轻扬) 
    那个第二个参数我明白了。但是如果我的文件名可能以一些符号开头,而不是一定以字母开头呢?如果我想继续用这个带两个参数的方法的话,应该怎么做?把所有ASCII开头的都过一遍吗?
      

  3.   

    我有些屈服于这个问题了
    我想还是用MagicCondom(可怜的套套,别人爽了,我却要被抛弃了)的方法吧,就是遍历所有的的文件名.那现在又有一个问题了:就是我现在遍历万所有字母开头的文件以后,如何得到其他没有被访问过的文件名?
    谢谢! 
    最近没什么时间上网,您要是看了这个帖子,麻烦帮忙顶,谢谢!
      

  4.   

    我觉得你一次全读没问题的,内存绝对不是问题。
    假设你有10000个文件,每个文件名20字节,已经很大了吧。
    就是200000,也就200K,这很多吗?
    速度问题上面已经有人说过了。
    我做了一个实验,我有一个文件夹下有74个文件。
    我用System.IO.Directory.GetFiles(path);
    循环200次,就是读了大概15000次。
    每次的结果我都保存在一个数组中没销毁。
    耗时0.3125秒。
    所以应该没问题了吧。
      

  5.   

    还有一个实验:
    我的System32下有2387个文件,同上的方法,0.0625秒。
      

  6.   

    最近奇怪,做得项目都要读大量的文件,楼主可以先取文件名或过滤,
    再分析是否对他进行处理。
    另外可以加上线程。
    下面是一个使用的例子。
    http://blog.csdn.net/zhzuo/archive/2004/06/15/22038.aspx
    http://blog.csdn.net/zhzuo/archive/2004/06/15/22039.aspx