一尘不染

尝试更新src / web / prod文件夹(jsp)中的文件

jsp

我正在一起使用jboss,eclipse和svn。我必须将文件存储在我的测试文件夹中: test / create.jsptest /
data.txt
。我要做的是,当我调用 create.jsp时 ,它将更新 data.txt
。显然,我希望我的data.txt保持原样,因为其他脚本正在尝试从中读取。

我尝试了数十种新方法将路径放置到File对象,但是由于某种原因,它在jboss war文件夹下创建了文件。

尝试过:

ServletContext app = getServletContext();
String path1 = app.getRealPath("/");
File f = new File(path1);
// AND
File f = new File("../../data.txt");

阅读 197

收藏
2020-06-10

共1个答案

一尘不染

假设该/test文件夹位于webcontent中,则需要以下内容:

String absolutePath = getServletContext().getRealPath("/test/data.txt");
File file = new File(absolutePath);

要么

String webcontentRoot = getServletContext().getRealPath("/");
File file = new File(webcontentRoot, "test/data.txt");

你看到了吗?Java
IO仅了解本地磁盘文件系统路径,而不能理解URL或上下文外部的路径。本ServletContext#getRealPath()是被用来转换一个
相对的网络路径 ,以一个 绝对的本地磁盘文件系统路径 这反过来又可以在通常的Java IO的东西继续使用。您 永远不要 在Java
IO中使用相对路径。您将取决于当前的工作目录,该目录可能因环境/情况而异。

也就是说,您通常不想将文件写入Web内容。只要您重新部署WAR,它们就会迷路。而是在webapp之外的其他地方创建固定磁盘文件系统路径并加以利用。甚至更好的是,使用独立的SQL数据库:)

2020-06-10