如何从类路径加载/引用文件作为File实例

时间:2010-12-05 16:42:40

标签: java classpath

我的类路径中有一个文件,例如com/path/to/file.txt。我需要加载或引用此文件作为java.io.File对象。这是因为我需要使用java.io.RandomAccessFile访问该文件(文件很大,我需要寻找某个字节偏移量)。这可能吗? RandomAccessFile的构造函数需要File实例或String(路径)。

如果有另一个解决方案寻求某个字节偏移并读取该行,我也会对此持开放态度。

4 个答案:

答案 0 :(得分:225)

尝试获取类路径资源的URL:

URL url = this.getClass().getResource("/com/path/to/file.txt")

然后使用接受URI的构造函数创建文件:

File file = new File(url.toURI());

答案 1 :(得分:46)

这也有效,并且不需要/ path / to / file URI转换。如果文件在类路径上,则会找到它。

File currFile = new File(getClass().getClassLoader().getResource("the_file.txt").getFile());

答案 2 :(得分:17)

我发现这个单行代码最有效和最有用:

{{1}}

像魅力一样。

答案 3 :(得分:4)

或者使用绝对CLASSPATH路径直接使用资源的InputStream(从/斜杠字符开始):


getClass().getResourceAsStream("/com/path/to/file.txt");

或相对CLASSPATH路径(当您编写的类与资源文件本身位于同一Java包中时,即com.path.to):


getClass().getResourceAsStream("file.txt");