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

发布于 2024-10-06 03:16:13 字数 253 浏览 2 评论 0原文

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

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

I have a file that is in my classpath, e.g. com/path/to/file.txt. I need to load or reference this file as a java.io.File object. The is because I need to access the file using java.io.RandomAccessFile (the file is large, and I need to seek to a certain byte offset). Is this possible? The constructors for RandomAccessFile require a File instance or String (path).

If there's another solution to seek to a certain byte offset and read the line, I'm open to that as well.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

旧伤慢歌 2024-10-13 03:16:13

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

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

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

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

Try getting hold of a URL for your classpath resource:

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

Then create a file using the constructor that accepts a URI:

File file = new File(url.toURI());
━╋う一瞬間旳綻放 2024-10-13 03:16:13

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

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

This also works, and doesn't require a /path/to/file URI conversion. If the file is on the classpath, this will find it.

File currFile = new File(getClass().getClassLoader().getResource("the_file.txt").getFile());
凉城 2024-10-13 03:16:13

我发现这一行代码最有效、最有用:

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

工作起来就像一个魅力。

I find this one-line code as most efficient and useful:

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

Works like a charm.

小嗷兮 2024-10-13 03:16:13

或者直接使用资源的InputStream,使用绝对CLASSPATH路径(以/斜线字符开头):


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

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


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

Or use directly the InputStream of the resource using the absolute CLASSPATH path (starting with the / slash character):


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

Or relative CLASSPATH path (when the class you are writing is in the same Java package as the resource file itself, i.e. com.path.to):


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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文