Проблема с массивом строк, когда getfile () не возвращает совпадений - PullRequest
1 голос
/ 23 сентября 2010

Мне было поручено написать небольшое приложение на c #, которое ищет каталог с заданным типом файла. Я тестирую файлы .txt, но приложение предназначено для файлов .epl для принтеров Zebra.

Я пытаюсь написать это так, чтобы:

aO Если файл .epl найден, отправьте его на принтер, удалите файл .epl и подождите несколько секунд. Снова найдите в каталоге .epl, отправьте на принтер, удалите.

Если файл .epl не найден, подождите несколько секунд, повторите, пока файл .epl не будет найден. Повторите а)

Проблема возникает, когда Directory.GetFiles (@ s1, "* .txt") вообще не находит файлов .txt и пытается запустить вместе с остальной программой.

Я получаю: System.IndexOutOfRangeException: индекс находился за пределами массива.

Я не уверен, что делать, полагаю, это связано с нулевыми исключениями? Мой код не завершен, так как эта проблема поставила меня в тупик; Я тоже новичок, и поэтому это не самый чистый код.

Код следующий: http://pastebin.com/BHNAtTsk

Ответы [ 2 ]

2 голосов
/ 23 сентября 2010

Вы без разбора используете filePaths[0], хотя массив может быть пустым.На самом деле это вообще не связано с нулевыми значениями.GetFiles() всегда возвращает массив, но это будет пустой массив, если не найдено подходящих файлов.

Я считаю, что вы должны просто изменить свое условие на:

if (filePaths.Length > 0)
0 голосов
/ 23 сентября 2010

Посмотрите на этот код:

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

Из документации:

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

Если файлов нет, этот метод возвращает пустой массив.

Таким образом, вместо этого соответствующая проверка:

if (filePaths.Length > 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...