Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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
使用JavaEE和Tomcat查找创建的文件_Java_Jsp_Jakarta Ee_Tomcat_File Io - Fatal编程技术网

使用JavaEE和Tomcat查找创建的文件

使用JavaEE和Tomcat查找创建的文件,java,jsp,jakarta-ee,tomcat,file-io,Java,Jsp,Jakarta Ee,Tomcat,File Io,我创建了一个动态web项目,并使用ApacheTomcat作为服务器 在我的servlet中,我正在创建一个文本文件,并希望在JSP中重用该文件。但是,当我执行以下简单操作时,默认情况下,它们是在Eclipse的安装文件夹中创建的: File f = new file("test.txt"). 我不知道为什么会这样。有没有办法在WebContent目录中创建文件,因为我想在JSP中下载该文件。Java有“当前目录”的概念。当您通过Eclipse启动应用程序时,这可能确实指向您的安装目录。如果

我创建了一个动态web项目,并使用ApacheTomcat作为服务器

在我的servlet中,我正在创建一个文本文件,并希望在JSP中重用该文件。但是,当我执行以下简单操作时,默认情况下,它们是在Eclipse的安装文件夹中创建的:

File f = new file("test.txt"). 
我不知道为什么会这样。有没有办法在
WebContent
目录中创建文件,因为我想在JSP中下载该文件。

Java有“当前目录”的概念。当您通过Eclipse启动应用程序时,这可能确实指向您的安装目录。如果未指定任何路径,将在此当前目录中创建一个文件。因此,您的
test.txt
最终会出现在那里

WebContent
目录是Eclipse特有的。您的代码不应该依赖于将任何内容放在那里。只有在开发应用程序时,才可以通过Eclipse启动应用程序,而不是在将其部署到实时服务器时

此目录的内容将成为你的.war的
根目录
,这是一个众所周知的位置,与你启动和部署应用程序的方式无关,但你仍然不能依赖于在运行时将任何内容写入此位置。您可以将应用程序部署为打包的.war(可能用于实时部署),也可以部署未打包的应用程序,但应用程序服务器可能根本无法接收在运行时所做的任何更改

如果您确信您的应用程序只在一台服务器上运行,那么您可以做的是将文件写入文件系统中的一个已知位置,例如
/tmp
,或
/var/yourapp/files
,等等。然后,提供这些文件的代码可以从该位置拾取这些文件


如果您想根据JavaEE规则100%安全地运行,您应该将文件存储在类似FTP服务器的东西上,该服务器具有可配置的地址。从技术上讲,您的war可以在集群上的节点之间传送,请求可能最终到达不同的机器,因此依赖本地文件系统将无法工作。

执行此语句
this.getServletContext().getRealPath(“”
),您将获得Tomcat WebServer在运行时指向的路径。您可以添加文件夹“MyFolder”,并将此语句称为:

新文件(this.getServletContext().getRealPath(“”+“/MyFolder/test.txt”)

无论如何,默认路径如下所示:

...\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\<NameOfYourProject>
…\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\
请注意,创建新文件时,除非更改tomcat应该指向的运行时位置,否则它不会出现在即时工作区中(请检查.metadata路径)