Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法检查web项目中是否存在文件_Java_Jsp - Fatal编程技术网

Java 无法检查web项目中是否存在文件

Java 无法检查web项目中是否存在文件,java,jsp,Java,Jsp,我的web项目中有一个pdf文件,位于以下位置: “静态/可下载/20/Home\u insurance\u booklet.pdf” WebContent中存在“静态”。项目的上下文根是“pas” 在其中一个jsp中,我需要检查Home\u insurance\u booklet.pdf文件是否存在。我尝试了很多方法,但都没有成功。下面是我使用的代码 String filePath = request.getContextPath()+"/static/Downloadables/20/Hom

我的web项目中有一个pdf文件,位于以下位置:

“静态/可下载/20/Home\u insurance\u booklet.pdf”

WebContent中存在“静态”。项目的上下文根是“pas”

在其中一个jsp中,我需要检查Home\u insurance\u booklet.pdf文件是否存在。我尝试了很多方法,但都没有成功。下面是我使用的代码

String filePath = request.getContextPath()+"/static/Downloadables/20/Home_insurance_booklet.pdf";
if(new File(filePath.toString()).exists()) {
------
}
通过文件存在,条件返回false。如何在web项目根目录中的特定位置检查文件是否存在

编辑: 显示的文件路径为
/pas/static/Downloadables/20/Home\u insurance\u小册子.pdf

您必须使用基于文件系统的URL而不是基于相对web的URL。

您必须使用基于文件系统的URL而不是基于相对web的URL。

检查项目中是否加载了文件。然后在代码中首先尝试文件的绝对路径,然后尝试相对路径。

检查文件是否加载到项目中。然后在代码中首先尝试文件的绝对路径,然后尝试相对路径。

尝试以下操作:

String path = getServletContext().getRealPath("/static/Downloadables/20/Home_insurance_booklet.pdf")
File file = new File(path)
if (file.exists()) {
  // Success
}
下面是
getRealPath()
的API文档:

尝试以下操作:

String path = getServletContext().getRealPath("/static/Downloadables/20/Home_insurance_booklet.pdf")
File file = new File(path)
if (file.exists()) {
  // Success
}
下面是
getRealPath()
的API文档: 使用

ServletContext context = request.getServletContext();
StringBuilder finalPathToFile = new StringBuilder(context.getRealPath("/"));
ServletContext#getRealPath()将web内容路径(服务器磁盘文件系统上扩展的WAR文件夹结构中的路径)转换为绝对磁盘文件系统路径

“/”
表示web内容根目录

之后,以这种方式追加:

finalPathToFile.append("/static/Downloadables/20/Home_insurance_booklet.pdf");
然后使用

if(new File(finalPathToFile.toString()).exists()) {
---------------------
doWhateverYouWantToDo
---------------------
}
使用

ServletContext#getRealPath()将web内容路径(服务器磁盘文件系统上扩展的WAR文件夹结构中的路径)转换为绝对磁盘文件系统路径

“/”
表示web内容根目录

之后,以这种方式追加:

finalPathToFile.append("/static/Downloadables/20/Home_insurance_booklet.pdf");
然后使用

if(new File(finalPathToFile.toString()).exists()) {
---------------------
doWhateverYouWantToDo
---------------------
}

如果你打印文件路径,你会得到什么?@jamp我得到:/pas/static/Downloadables/20/Home\u insurance\u bulkbook.pdfI我猜路径实际上并不存在,是吗?简单地说,它以/开头,因此它是一条绝对的路径。。。也许你想用绝对路径或规范路径检查pas/static/Downloadables/20/Home\u insurance\u bulket.pdftry我刚刚重读了你的问题,实际上你可能只想检查“static/downloables/20/Home\u insurance\u bulket.pdf”。。。我必须对你的项目结构有一个更清晰的概念,才能告诉你哪一个…如果你打印文件路径,你会得到什么?@jamp我得到:/pas/static/Downloadables/20/Home\u insurance\u booklet.pdfI我猜路径实际上并不存在,是吗?简单地说,它以/开头,因此它是一条绝对的路径。。。也许你想用绝对路径或规范路径检查pas/static/Downloadables/20/Home\u insurance\u bulket.pdftry我刚刚重读了你的问题,实际上你可能只想检查“static/downloables/20/Home\u insurance\u bulket.pdf”。。。我必须对你的项目结构有一个更清晰的概念,才能告诉你哪一个。。。