从jar中的动态创建的目录(在文件系统中)读取

时间:2014-05-06 23:06:10

标签: java eclipse hadoop jar

您好我有一个java eclipse项目,我想从命令行执行。我制作了一个罐子,并从命令行运行它。

我想出了如何使用getresourceasstream访问Jar中的文件。

例如:

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");`

这给出了一个filenotfoundexception。

我想做的是

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 个答案:

答案 0 :(得分:0)

您必须提供用作属性的文件系统路径

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

或命令行参数,然后在对hadoop和File声明的调用中使用它。