Чтение из динамически созданного каталога (в файловой системе) в банке
Привет у меня есть проект 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
декларация.