如何从类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");