gpt4 book ai didi

java - 从另一个项目访问 PDF 文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:45:45 26 4
gpt4 key购买 nike

我在 eclipse foobar 中有两个项目。 bar 使用 eclipse 中的构建路径配置作为 foo 的一部分包含在内。这允许我从 foo 内部的 bar 访问我需要的所有 Java 文件。

但是,我还有一些 PDF 帮助文档,它们包含在 bar 中。这些文件包含在 help/ 目录中。当我尝试访问这样的文件 help/file.pdf 时,它可以在 bar 中工作,但不能在 foo 中工作。

如何在 foo 中访问这些 PDF 文件?

问答

如何访问文件?通过搜索资源的类路径来访问文件。 (即getClassLoader().getResource(path))

最佳答案

通过使用 Eclipse IDE 中的“构建路径”选项,您可以将 IDE 设置为在 JVM 类路径(即“bin”)中添加“bar”类文件位置的路径。并且您可以通过这些路径获取任何资源。

您将需要一个类来获取资源,因为 JVM 通过将该类作为引用来返回资源。

Anchor成为bar项目的help包中的一个类。
这是 foo 项目中的类中的代码。

URL url = bar.Anchor.class.getResource("file.pdf");
System.out.println(url);

您无法直接获取资源(不以类作为引用)。
这是因为 JVM 基本上只记录在其路径中找到的 .class 文件。

但是,如果您仍然想在不使用任何 .class 文件作为引用的情况下获取文件,那么只需使用 File(location_of_file) 类即可完成。这是一个简单的方法,我知道你不想要这个。

如果您只想通过“构建路径”设置的路径获取文件,那么您需要在 JVM 的类路径中检查该文件。
要获取类路径,您需要调用 System.getProperty() 方法并获取“java.class.path”属性。然后检查类路径中存在的所有路径。

File file = new File("help","file.pdf");   //'file.pdf' file in 'help' folder 
String classpath = System.getProperty("java.class.path");
StringTokenizer tokenizer = new StringTokenizer(classpath,";");
while(tokenizer.hasMoreTokens()){
File temp = new File(tokenizer.nextToken(), file);
if(temp.exists()){
// here you get your file as 'temp'.
// If you want it to be in URL form, you can convert it.
break;
}
}

<小时/>这是示例中使用的目录结构:
|-- bar//项目
| |-- bin ....//由 IDE 创建(其位置在类路径中设置,
| | |--.....      //类和资源由IDE添加)
| |
| |-- src
| |-- 帮助
| |-- Anchor.java
| |-- 文件.pdf
|
|-- foo//项目
|-- src
|-- Accessor.java

<小时/>

关于java - 从另一个项目访问 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24016266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com