Чтение из динамически созданного каталога (в файловой системе) в банке

Привет у меня есть проект Java Eclipse, который я хочу выполнить из командной строки. Я сделал банку из этого и запускаю его из командной строки.

Я выяснил, как получить доступ к файлу в Jar с помощью getresourceasstream.

Пример:

InputStream is = Extractor.class.getResourceAsStream("CompanyNameListModified.txt");
BufferedReader  in=new BufferedReader(new InputStreamReader(is));`

Теперь я хочу знать, как получить доступ к каталогу из jar.

В настоящее время:

Runtime.getRuntime().exec("hadoop fs -get /tmp/stockmarkets/ localfile");
File dir = new File("/home/hadoop/project/localfile");`

Это дает файлу notfoundexception.

Что я хочу сделать, это

File[] directoryListing = dir.listFiles();
if (directoryListing != null) {
for (File child : directoryListing) {
        ....
    }
}

Следовательно, перейдите в каталог и зациклите каждый файл в этом каталоге. Как мне сделать это, чтобы он работал для моего JAR.?

Итак, я попробовал это:

Runtime.getRuntime().exec("hadoop fs -get /tmp/stockmarkets/ localfile");
File dir =new File(Extractor.class.getResource("/home/hadoop/project/localfile").getPath());

ошибка:

Exception in thread "main" java.lang.NullPointerException

Я проверил мой каталог, он имеет локальный каталог файлов.

1 ответ

Решение

Вы должны указать путь к файловой системе для использования в качестве свойства

java -jar yourprogram.jar -DworkDir=/home/hadoop/project

или аргумент командной строки, а затем использовать его в вызове hadoop и File декларация.

Другие вопросы по тегам