我的任务是在c#中编写一个小应用程序,它在目录中搜索给定的文件类型。我正在使用.txt文件进行测试,但该应用程序适用于Zebra打印机的.epl文件。
我试图以这样的方式写它:
aO如果找到.epl文件,发送到打印机,删除.epl文件,然后等待几秒钟。 再次搜索目录.epl文件,发送到打印机,删除。
如果找不到.epl文件,请等待几秒钟,重复直到找到.epl文件。重复a)
当Directory.GetFiles(@ s1,“* .txt”)根本找不到.txt文件并尝试与程序的其余部分一起运行时,会出现问题。
我得到:System.IndexOutOfRangeException:索引超出了数组的范围。
我不知道该怎么做,我相信这与null异常有关吗?我的代码不完整,因为这个问题让我感到难过;我也是新手,因此它不是最干净的代码。
答案 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)