从 /src/main/resources 读取文件给出异常 FileNotFound

Reading file from /src/main/resources gives exception FileNotFound

我的项目结构如下:

KnitProject - Project Name
/src/main/java/com/knit/controller/File1.java
/src/main/resources/data/read.txt

在 File1.java 中,我正在尝试获取 /src/main/resources 文件夹中 read.txt 的路径。

Main.java
=========
Server server = new Server(8585);
.....
.....
server.start();
server.join();

File1.java
==========
URL url = Encrypter.class.getResource("/data/read.txt");
System.out.println(url.getFile()); //This prints "C:/Users/KnitProject/target/classes/data/read.txt" which is working locally from my system

当我在 Tomcat i.e http://<ip>:8080, /src/main/resources path is not accessible.

部署这个 jar
System.out.println(url.getFile()); //This prints "http://<ip>:8080/test/target/KnitProject.jar!/data/read.txt.

尝试使用

读取文件时
FileInputStream fileInputStream = new FileInputStream(new File(url.getFile())) ---> gives me error FileNotFound Exception when deployed in Tomcat

我已经创建了 KnitProject 应用程序的 jar 并将其部署在 Tomcat 中。任何人都可以帮助我我做错了什么。 /src/main/resources/ 可从我的本地计算机访问,相同的代码给出错误 FileNotFoundException.

如何读取 /src/main/resources/data 下的文件。我在我的代码中使用嵌入式 Jetty 服务器,同样被编译并构建为一个 Jar,然后部署在 Tomcat 中。我是 运行 使用 JNLP 的 jar。

您可以使用resourceAsStream方法从jar中读取文件

InputStream stream = Encrypter.class.getResourceAsStream(filePath)

现在您可以使用此流继续