getfile()返回没有匹配项时的字符串数组问题

时间:2010-09-23 09:58:42

标签: c# string

我的任务是在c#中编写一个小应用程序,它在目录中搜索给定的文件类型。我正在使用.txt文件进行测试,但该应用程序适用于Zebra打印机的.epl文件。

我试图以这样的方式写它:

aO如果找到.epl文件,发送到打印机,删除.epl文件,然后等待几秒钟。 再次搜索目录.epl文件,发送到打印机,删除。

如果找不到.epl文件,请等待几秒钟,重复直到找到.epl文件。重复a)

当Directory.GetFiles(@ s1,“* .txt”)根本找不到.txt文件并尝试与程序的其余部分一起运行时,会出现问题。

我得到:System.IndexOutOfRangeException:索引超出了数组的范围。

我不知道该怎么做,我相信这与null异常有关吗?我的代码不完整,因为这个问题让我感到难过;我也是新手,因此它不是最干净的代码。

代码如下:http://pastebin.com/BHNAtTsk

2 个答案:

答案 0 :(得分:2)

即使数组可能为空,您仍然不加区分地使用filePaths[0]。它实际上根本不涉及空值。 GetFiles()总是返回一个数组,但如果找不到匹配的文件,它将是一个空数组。

我相信你应该简单地改变你的状况:

if (filePaths.Length > 0)

答案 1 :(得分:0)

看看这段代码:

string[] filePaths = Directory.GetFiles(@s1, "*.txt");
if ((filePaths[0]).Length > 1)   .....

来自文档:

http://msdn.microsoft.com/en-us/library/07wt70x2.aspx

  

如果没有文件,则此方法返回一个空数组。

所以适当的检查是:

if (filePaths.Length > 0)