【发布时间】:2016-03-04 13:25:30
【问题描述】:
我有一个非常简单的方法,它使用getclass().getResourceAsStream() 方法来读取文件。但是它总是返回 null,我不知道出了什么问题。这是我的一段代码。
InputStream sw = getClass().getResourceAsStream("/filename.txt");
BufferedReader bf = new BufferedReader( new InputStreamReader(sw));
sw 始终保持为空。文件filename.txt 存在于我项目的根目录中。
编辑: 我找到了原因。我意识到我正在从 Eclipse 运行我的项目,并且该项目不是我 PC 上类路径的一部分。但是,如果我将程序打包为 jar 文件然后运行它,则 jar 文件中的文件被视为资源,可以使用 getResourceAsStream() 方法读取。
【问题讨论】:
-
/filename.txt是绝对路径。./filename.txt有效吗? -
定义“你的项目的根目录”。它在类路径上吗?
-
@Ivan:不,它也不工作。
-
@DaveNewton:不,不是,我不想成为。因为我要做的是在 hadoop 工作中使用这段代码。这有助于我将每个依赖项打包到我的 jar 文件中,然后发布。在 HAdoop 中,jar 文件被复制的地方并不总是在类路径中
-
在提问之前您是否检查了How to really read text file from classpath in Java 或与
getResourcesAsStream相关的任何其他问题?
标签: java