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

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

如果还有另外一种方法来查找某个字节偏移并读取该行,那么我也可以打开该解决scheme。

谢谢。

尝试获取您的类path资源的URL:

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

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

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

这也适用,并且不需要/ path / to / file URI转换。 如果该文件在类path上,则会find它。

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

我觉得这个单行代码是最有效率和最有用的:

 File file = new File(ClassLoader.getSystemResource("com/path/to/file.txt").getFile()); 

奇迹般有效。

或者使用绝对CLASSPATHpath直接使用资源的InputStream (以/斜杠字符开始):

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

或者相对的CLASSPATHpath(当你正在编写的类与资源文件本身在同一个Java包中时, com.path.to ):

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