一尘不染

如何从Java中classpath读取文本文件?

java classpath

如何从Java中classpath读取文本文件?


阅读 661

收藏
2020-01-10

共1个答案

一尘不染

在类路径上的目录中,从同一类加载器加载的类中,你应该能够使用以下任一种:

// From ClassLoader, all paths are "absolute" already - there's no context
// from which they could be relative. Therefore you don't need a leading slash.
InputStream in = this.getClass().getClassLoader()
                                .getResourceAsStream("SomeTextFile.txt");
// From Class, the path is relative to the package of the class unless
// you include a leading slash, so if you don't want to use the current
// package, include a slash like this:
InputStream in = this.getClass().getResourceAsStream("/SomeTextFile.txt");

如果这些都不起作用,则表明还有其他问题。

因此,例如,使用以下代码:

package dummy;

import java.io.*;

public class Test
{
    public static void main(String[] args)
    {
        InputStream stream = Test.class.getResourceAsStream("/SomeTextFile.txt");
        System.out.println(stream != null);
        stream = Test.class.getClassLoader().getResourceAsStream("SomeTextFile.txt");
        System.out.println(stream != null);
    }
}

而这个目录结构:

code
    dummy
          Test.class
txt
    SomeTextFile.txt

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

java -classpath code:txt dummy.Test

结果:

true
true
2020-01-10