Как ввести каталог в качестве аргумента в Eclipse - PullRequest
0 голосов
/ 08 октября 2010

По сути, у меня есть каталог с некоторыми файлами в нем.В конфигурациях запуска я пытаюсь представить каталог как аргумент: \(workspacename\directory.Затем следующий код должен создать список всех файлов в этом каталоге:

String directory = args[1];
File folder = new File(directory);
File[] allFiles = folder.listFiles();
ArrayList<File> properFiles = null;
for (File file: allFiles) {
    if(file.getName().endsWith(".dat")){
    properFiles.add(file);
    }
}

проблема, с которой я сталкиваюсь, заключается в том, что по какой-то причине allFiles равен нулю.

Ответы [ 2 ]

5 голосов
/ 08 октября 2010

Я угадаю, в чем может быть ваша проблема:

Если ваш аргумент является относительным путем (в отличие от абсолютного пути, начинающегося, например, с "/" или "c: /"), помните, что файлы будут относиться к рабочему каталогу приложения. 1003 *

То есть new File(directory) будет зависеть от того, где запущено приложение. В Eclipse рабочий каталог по умолчанию находится в проекте. Так что, если ваш проект находится на верхнем уровне рабочей области, это будет что-то вроде workspacename/project.

Вы можете попробовать распечатать folder.getAbsolutePath(), folder.exists() и folder.isDirectory(), чтобы помочь диагностировать вашу проблему.

0 голосов
/ 08 октября 2010

Javadocs говорят, что listFiles() вернет null, если каталог на самом деле не существует (среди прочего):

Возвращает ноль, если это абстрактное имя пути не обозначает каталог или если произошла ошибка ввода-вывода.

Отладка путем проверки (отладчик или printf) значения args[1].

Кроме того, похоже, что вы пытаетесь использовать переменную подстановки, чтобы вставить местоположение рабочей области в путь. Если это так, опять же, вам нужно проверить (с помощью отладчика или printf), что заполнитель заменяется правильно.

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