[英]How to Create a File instance from the Jar/Classpath
我有一个可执行的JAR文件,其中有一个文件,我想通过代码(不是InputStream或其他任何文件……)作为java.io.File实例打开。
它是一个maven项目,文件位于“ src / main / resources / file.xxx”的根目录下。该文件在打包后位于jar的根目录下(已验证存在)。
我的第一次尝试:FileNotFoundException
java.io.File myFile = new java.io.File("file.xxx");
someMethodThatUsesTheFile(myFile); //I really need it to be a file!!!
其他尝试:FileNotFoundException
java.io.File myFile = new java.io.File("/file.xxx");
java.io.File myFile = new java.io.File("classpath:file.xxx");
java.io.File myFile = new java.io.File("classpath:/file.xxx");
我不确定到底发生了什么。 Web Apps可以轻松地从webapp根目录中加载所有内容,我对为何JAR应用程序行为不同感到困惑。
附加信息:
简短的回答:它不是“文件”,因此您无法做到。
JAR文件是文件,但不是其内容。
替代方法是:
尝试使用该方法的其他重载版本,InputStreams通常是您的选择,您可以使用以下代码加载它:
InputStream是= getClass()。getResourceAsStream(“ file.xxx”);
将该文件移出JAR并移至JAR的同一目录(考虑安全风险)
试试这个可能对您有帮助:
URL url = this.getClass().getResource("src/main/resources/file.xxx");
File file= new File(url.toURI());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.