我的类路径中有一个文件,例如 com/path/to/file.txt。我需要加载或引用这个文件作为一个 java.io.File对象。这是因为我需要使用 java.io.RandomAccessFile访问该文件(该文件很大,我需要寻找某个字节的偏移量)。这可能吗?RandomAccessFile的构造函数需要一个 File实例或 String (路径)。
com/path/to/file.txt
java.io.File
java.io.RandomAccessFile
RandomAccessFile
File
如果有另一种解决方案来寻找某个字节的偏移量并读取该行,我也愿意接受这种解决方案。
尝试获取类路径资源的 URL:
URL url = this.getClass().getResource("/com/path/to/file.txt")
然后使用接受 URI 的构造函数创建一个文件:
File file = new File(url.toURI());
或者使用绝对 CLASSPATH 路径(从 /斜杠字符开始)直接使用资源的 InputStream:
/
InputStream
getClass().getResourceAsStream("/com/path/to/file.txt");
或者相对 CLASSPATH 路径(当您正在编写的类与资源文件本身在同一个 Java 包中时,即 com.path.to) :
com.path.to
getClass().getResourceAsStream("file.txt");
这也可以工作,并且不需要/path/to/file URI 转换。如果该文件位于类路径中,那么这个文件将会找到它。
File currFile = new File(getClass().getClassLoader().getResource("the_file.txt").getFile());
我发现这一行代码是最有效和最有用的:
File file = new File(ClassLoader.getSystemResource("com/path/to/file.txt").getFile());
非常有效。