FileInfo[] fileInfoSource = TheFolderSource.GetFiles("*.bin|*.txt|*.xls|*.xlsx|*.doc|*.docx|*.xml|*.jpg|*.png|*.gif|*.rar"); //枚举源文件目录中的文件异常:路径中具有非法字符我之所以不用"*.*",是因为我的程序会有日志文件.ini产生,而它不是应该被枚举的,请问各位我把匹配搜索条件的格式没写对?还是怎么回事?

解决方案 »

  1.   

    http://topic.csdn.net/t/20030322/11/1562600.html
      

  2.   

    看msdn中GetFiles一个参数是什么意思。两个参数。三个参数。
    你用错了
    http://msdn.microsoft.com/zh-cn/library/07wt70x2
      

  3.   

    其实,你错了……
    我用的是public FileInfo[] GetFiles(string searchPattern);
    FileInfo[] GetFiles(一个参数,两个参数,三个参数)你说的那个是Directory.GetFiles 
      

  4.   

    DirectoryInfo.GetFiles 方法 (String)返回当前目录中与给定的搜索模式匹配的文件列表。searchPattern
    类型: System.String 搜索字符串(如“*.txt”)。你自己看看这个方法的说明吧,根本就不知道你送的参数格式
      

  5.   

    DirectoryInfo TheFolderSource = new DirectoryInfo(Utils._sourcePath);
                    FileInfo[] fileInfoSource = TheFolderSource.GetFiles("*.bin,*.txt,*.xls,*.xlsx,*.doc,*.docx,*.xml,*.jpg,*.png,*.gif,*.rar"); //枚举源文件目录中的文件我换成逗号单步调试的时候,它就没有异常了,可紧接着下面这句:
    FileStream streamSource = new FileStream(Utils._sourcePath +"\\"+fileInfoSource.ElementAt(cnt).Name, FileMode.Open);异常:索引超出范围?我是用数组的形式枚举的文件啊,应该是一个萝卜一个坑啊,怎么会超出范围呢,有一点要说明,就是我的Utils.sourcePath指的目录里不一定有*.bin,*.txt,*.xls,*.xlsx,*.doc,*.docx,*.xml,*.jpg,*.png,*.gif,*.rar这些类型的全部,一般只是它的子集,是不是这里有问题?
      

  6.   


    我看了,它就这么简单的一句啊“搜索字符串(如“*.txt”)。”我现在的情况是有很多类型后缀名的文件,该怎么表示呢?
      

  7.   


    先说这个方法的问题,起码我在MSDN上就没看到这个方法可以同时支持多个条件的例子,而且说明里也没有关于多个条件的说明,所以可以认为这个方法不支持多条件查询。
    再说你上面的问题
    异常:索引超出范围?fileInfoSource.ElementAt(cnt).Name
    你这句是去fileInfoSource数组里取元素,你给的索引(cnt)超出范围了。学会理清问题,弄明白什么跟什么是相关的,什么跟什么是无关的。
    别一出问题就把其它不相关的事情都联系上。
      

  8.   


    谢谢!
    我原来用"*.*"的时候是没问题的,用了"*.bin,*.txt,*.xls,*.xlsx,*.doc,*.docx,*.xml,*.jpg,*.png,*.gif,*.rar"之后(cnt)就超出范围了,cnt是从1开始累加的,也就是说,fileInfoSource.GetFiles没有找到任何符合这个匹配条件的文件,所以枚举的数组元素为0,也就是说我的这种用法是错的,是这样了吧?
      

  9.   

    我说了,你这是两个问题。
    第一个问题是 GetFiles 用的不对,没有返回东西。第二个问题是数组下标越界,不管你前面有没有数据,你这里都不应该出现下标越界的情况,这只能说明你写代码的逻辑不严谨。
      

  10.   

    ("*.bin|*.txt|*.xls|*.xlsx|*.doc|*.docx|*.xml|*.jpg|*.png|*.gif|*.rar"
    过滤条件斜对么有?