我有一个文件位于我的类路径中,例如, com/path/to/file.txt
。我需要加载或引用此文件作为java.io.File
对象。这是因为我需要使用java.io.RandomAccessFile
来访问文件(文件很大,我需要寻找某个字节的偏移量)。这可能吗? RandomAccessFile
的构造函数需要一个File
实例或String(路径)。如何从类路径加载/引用文件作为File实例
如果还有另一种解决方案寻求某个字节偏移量并读取该行,我也对此表示赞同。
我有一个文件位于我的类路径中,例如, com/path/to/file.txt
。我需要加载或引用此文件作为java.io.File
对象。这是因为我需要使用java.io.RandomAccessFile
来访问文件(文件很大,我需要寻找某个字节的偏移量)。这可能吗? RandomAccessFile
的构造函数需要一个File
实例或String(路径)。如何从类路径加载/引用文件作为File实例
如果还有另一种解决方案寻求某个字节偏移量并读取该行,我也对此表示赞同。
尝试获得一个网址的搁置你的classpath资源:
URL url = this.getClass().getResource("/com/path/to/file.txt")
然后使用接受URI的构造函数创建一个文件:
File file = new File(url.toURI());
哇!这是快速和正确的。谢谢! – jake 2010-12-05 17:01:49
任何机会,你可以用大绿色的勾号接受这个答案? :) – joelittlejohn 2010-12-06 13:12:03
对不起,我还不能投票。 – jake 2010-12-13 03:39:48
或者使用直接使用资源的InputStream
绝对CLASSPATH路径(以/
斜杠字符开头):
getClass().getResourceAsStream("/com/path/to/file.txt");
或相对路径CLASSPATH(如果你正在写的类是在同一个Java包的资源文件本身,即com.path.to
):
getClass().getResourceAsStream("file.txt");
这也适用,并且不需要/路径/到/文件URI转换。如果该文件在类路径中,则会找到它。
File currFile = new File(getClass().getClassLoader().getResource("the_file.txt").getFile());
我觉得这是一个行代码作为最有效和最有用:
File file = new File(ClassLoader.getSystemResource("com/path/to/file.txt").getFile());
就像一个魅力。
工作端到端的例子是这里的细节:[https://stackoverflow.com/questions/1464291/how-to-really-read-text-file-from-classpath-in-java/49120666#49120666] – ravibeli 2018-03-05 22:43:36