如何在Java中真正从类路径读取文本文件

我正在尝试读取一个文本文件,该文件是在CLASSPATH系统变量中设置的。不是用户变量

我正在尝试获取文件的输入流,如下所示:

将文件目录(D:\myDir)放在类路径中,然后尝试以下操作:

InputStream in=this.getClass().getClassLoader().getResourceAsStream(“SomeTextFile.txt”);
InputStream in=this.getClass().getClassLoader().getResourceAsStream(“/SomeTextFile.txt”);
InputStream in=this.getClass().getClassLoader().getResourceAsStream(“//SomeTextFile.txt”);

将文件的完整路径(D:\myDir\SomeTextFile.txt)放在CLASSPATH中,并尝试上面3行代码的相同方法

但不幸的是,它们都不起作用,我总是将null输入到我的InputStream

通过类路径上的目录,从同一类加载器加载的类中,您应该能够使用以下任一项:

//从类加载器中,所有路径都已经是“绝对的”——没有上下文
//它们可能是相对的。因此,不需要前导斜杠。
InputStream in=this.getClass().getClassLoader()
.getResourceAsStream(“SomeTextFile.txt”);
//从类中,路径相对于类的包,除非
//包含一个前导斜杠,因此如果不想使用当前
//软件包,包括如下斜杠:
InputStream in=this.getClass().getResourceAsStream(“/SomeTextFile.txt”);

如果这些都不起作用,那就意味着其他方面出了问题

例如,以以下代码为例:

包装假人;
导入java.io.*;
公开课考试
{
公共静态void main(字符串[]args)
{
InputStream=Test.class.getResourceAsStream(“/SomeTextFile.txt”);
System.out.println(流!=null);
stream=Test.class.getClassLoader().getResourceAsStream(“SomeTextFile.txt”);
System.out.println(流!=null);
}
}

这个目录结构:

代码
笨蛋
测试类
文本
SomeTextFile.txt

然后(在Linux机器上使用Unix路径分隔符):

java-classpath代码:txt dummy.Test

结果:

true
符合事实的

发表评论