FileInfo[] fileInfoSource = TheFolderSource.GetFiles("*.bin|*.txt|*.xls|*.xlsx|*.doc|*.docx|*.xml|*.jpg|*.png|*.gif|*.rar"); //枚举源文件目录中的文件异常:路径中具有非法字符我之所以不用"*.*",是因为我的程序会有日志文件.ini产生,而它不是应该被枚举的,请问各位我把匹配搜索条件的格式没写对?还是怎么回事?
调试欢乐多
你用错了
http://msdn.microsoft.com/zh-cn/library/07wt70x2
我用的是public FileInfo[] GetFiles(string searchPattern);
FileInfo[] GetFiles(一个参数,两个参数,三个参数)你说的那个是Directory.GetFiles
类型: System.String 搜索字符串(如“*.txt”)。你自己看看这个方法的说明吧,根本就不知道你送的参数格式
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这些类型的全部,一般只是它的子集,是不是这里有问题?
我看了,它就这么简单的一句啊“搜索字符串(如“*.txt”)。”我现在的情况是有很多类型后缀名的文件,该怎么表示呢?
先说这个方法的问题,起码我在MSDN上就没看到这个方法可以同时支持多个条件的例子,而且说明里也没有关于多个条件的说明,所以可以认为这个方法不支持多条件查询。
再说你上面的问题
异常:索引超出范围?fileInfoSource.ElementAt(cnt).Name
你这句是去fileInfoSource数组里取元素,你给的索引(cnt)超出范围了。学会理清问题,弄明白什么跟什么是相关的,什么跟什么是无关的。
别一出问题就把其它不相关的事情都联系上。
谢谢!
我原来用"*.*"的时候是没问题的,用了"*.bin,*.txt,*.xls,*.xlsx,*.doc,*.docx,*.xml,*.jpg,*.png,*.gif,*.rar"之后(cnt)就超出范围了,cnt是从1开始累加的,也就是说,fileInfoSource.GetFiles没有找到任何符合这个匹配条件的文件,所以枚举的数组元素为0,也就是说我的这种用法是错的,是这样了吧?
第一个问题是 GetFiles 用的不对,没有返回东西。第二个问题是数组下标越界,不管你前面有没有数据,你这里都不应该出现下标越界的情况,这只能说明你写代码的逻辑不严谨。
过滤条件斜对么有?