如何在java中获取文件绝对路径

如何在java中获取文件绝对路径,java,spring,spring-mvc,Java,Spring,Spring Mvc,我在我的项目中使用SpringMVC结构。我的项目结构如下: project | | |Java Resources | | | src WebContent | | | | resources | | form |

我在我的项目中使用SpringMVC结构。我的项目结构如下:

project
    |
    |
    |Java Resources
    |       |
    |       src
    WebContent
    |       |
    |       |
            resources
                |
                |
                form
                    |
                    Notification.pdf
我想在调用控制器时获取Notification.pdf的绝对路径。我还尝试了以下代码:

File file = new File("Notification.pdf");
        String path = file.getAbsolutePath();
        System.out.println("path: "+path);
输出:C:\Users\JohnPC\Desktop\Notification.pdf

getClass().getResources("Notification.pdf").getPath()

我想要的输出:D:\workspace\project\WebContent\resources\form\Notification.pdf

错误的一点是,在创建文件时,您假定该文件是在正在运行的文件的当前目录中创建的

getClass().getResources("Notification.pdf").getPath()
但通常在运行spring项目时,运行的不是您正在运行的java文件,而是在构建spring项目时生成的JAR,或者是在应用程序服务器中运行的WAR文件。因此,永远不会在目录资源中创建文件。。若您需要在服务器上创建文件,您应该在该服务器上定义一个静态目录,然后在该定义的目录中创建文件

因为一旦在该静态目录中创建了文件,它就会在服务器中持久化。 您可以像在问题中所做的那样创建文件。只需在代码中添加文件的路径

File File=new文件(“文件路径”+“Notification.pdf”);
字符串路径=file.getAbsolutePath();

System.out.println(“路径:+path”)

新文件(“Notification.pdf”)
将在默认路径(即用户的主目录)中创建名为Notification.pdf的文件句柄。这将不会搜索具有此名称的文件(甚至可能有多个,它会选择哪个?)。还要注意的是,“resources”文件夹可能不是最终应用程序的一部分,就像“src”目录不是一样。因此,您需要知道的是:应用程序的根目录是什么,应用程序中文件的相对路径是什么(您甚至可能只需要知道)。您需要该文件的绝对路径到底是为了什么?这是否回答了您的问题欢迎使用堆栈溢出。请考虑解释和解释您的代码是如何回答OP的问题的,我想创建功能,当用户点击它将下载的按钮时,主要是控制器,我已经写了2个下载文件的方法。当用户点击按钮时,将逐个下载两个PDF文件,如Notification.PDF、AdmissionForm.PDF。Notification.pdf是表单文件夹中的静态文件,将首先使用JasperReports生成AdmissionForm.pdf,然后下载。