我目前正在处理在Eclipse IDE中创建的简单Java项目。 我的项目结构如下图所示。在资源文件夹中,我有一个要动态读取的文件“ sample.txt”。
下面是我尝试的示例代码,该代码返回了 null 值。
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("../../sample.txt");
主要目标是我想读取文件(sample.txt),但不想提供该文件的硬编码引用,并且当该项目在任何其他系统中运行时,我的代码也应该可以工作。任何输入都会有所帮助。
答案 0 :(得分:-1)
getResourceAsStream()
在类路径中查找文件,并且类路径中没有“目录”,因此您不能给出"../../sample.txt"
。
getClass()
方法也不是静态的,您不能直接从main方法运行它。您将获得
无法从Object类型静态引用非静态方法getClass()
您可以使用Thread.currentThread().getContextClassLoader().getResourceAsStream(FilePath)
来在您的类路径中查找文件,
尝试以下代码,
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("sample.txt");
InputStreamReader streamReader = new InputStreamReader(is, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(streamReader);
try {
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
希望有帮助。