Java 如何访问war文件之外的文件夹?

Java 如何访问war文件之外的文件夹?,java,tomcat,pdf,Java,Tomcat,Pdf,我有一个应用程序,它有很多PDF文件,当我试图构建我的应用程序的war文件时,由于PDF文件的大小转换为Gbz,所以基本上我想从应用程序中删除PDF文件文件夹,将其放置在某个位置,然后构建一个war文件并将其部署到tomcat.so,有什么方法可以从war文件之外的应用程序中读取文件夹吗?您的服务器上需要一个separe文件夹来存储pdf。您将此文件夹位置传递给应用程序(例如,使用server.xml中的globaresouces,因此您的生产路径和本地路径来自服务器,而不是应用程序中的硬编码)

我有一个应用程序,它有很多PDF文件,当我试图构建我的应用程序的war文件时,由于PDF文件的大小转换为Gbz,所以基本上我想从应用程序中删除PDF文件文件夹,将其放置在某个位置,然后构建一个war文件并将其部署到tomcat.so,有什么方法可以从war文件之外的应用程序中读取文件夹吗?

您的服务器上需要一个separe文件夹来存储pdf。您将此文件夹位置传递给应用程序(例如,使用server.xml中的globaresouces,因此您的生产路径和本地路径来自服务器,而不是应用程序中的硬编码)。您通常从java(新文件(dir)、path.get…)访问给定文件夹。如果没有SecurityManager,您可以从webapp中访问文件系统的任何部分

例如,您的应用程序META-INF/context.xml

<Context>
  <ResourceLink global="PDFPath" name="PDFPath" type="java.lang.String"/>
</Context>
您可以使用该类处理本地文件系统上的文件和目录

例如,如果您的pdf文件位于一个名为pdf的文件夹中,则可以像这样创建一个文件对象


File pdfsFolder=新文件(“\pdfs”)

是正确的方法,但要授予Tomcat用户访问Pdf文件的权限,这是为了避免在直接url访问时出现文件列表。Ex()

否,这将配置您的Web应用程序将部署在何处,然后每次重新部署时都会删除它。您需要在tomcat/webapp文件夹之外有一个文件夹(并保持默认设置不变)。我编辑了答案:回答一个5年零9个月前被问到的问题并没有什么帮助。
<GlobalNamingResources>
<Environment name="PDFPath" value="D:\\Data\\PDFs" type="java.lang.String" override="false"/>
</GlobalNamingResources>
Context initCtx = new InitialContext();
Context envCtx = (Context)initCtx.lookup("java:comp/env");
String storagePath = (String) getContext().lookup("PDFPath");
File pdfDir = new File(storagePath);