InputStream不能为空/无法访问另一个包内的文件

时间:2012-06-30 03:38:51

标签: java

我试图从JAR文件中另一个包内的一个类访问文件。更具体地说,我创建输入流的类名为ClassA.class,位于包中:com.something.somethingelse,而我尝试使用inputstream打开的文件位于包com.something.storage。我正在调用getResourceAsStream方法,如下所示:

    ClassA.class.getResourceAsStream("/com/something/storage/MyFile.txt");

但是,它会抛出IllegalArgumentException,表示输入流不能为null。我尝试将文本文件存储在与ClassA相同的包中,但问题没有出现。只有当它存储在另一个包中时才会发生这种情况。请帮忙。

知道我执行此操作的方法是静态方法也可能有所帮助。这与问题有关吗?

2 个答案:

答案 0 :(得分:2)

com.something.somethingelse内的班级中,使用以下内容打开信息流:

getClass().getClassLoader().getResourceAsStream("com/something/storage/MyFile.txt");

使用getClassLoader()以绝对方式指定包路径(不包含第一个/)。

答案 1 :(得分:1)

ClassA.class.getResourceAsStream( “/ COM /东西/存储/ MyFile.txt的”);

返回null,因为文件“/com/something/storage/MyFile.txt”不存在