【问题标题】:Writing file in web Server without specifying real path在 Web 服务器中写入文件而不指定真实路径
【发布时间】:2012-08-26 17:30:59
【问题描述】:

在我的应用程序中,我有一个函数,我需要在 webcontent 文件夹中写入一个文件,我有一个名为 data 的文件夹,我需要写一个新名称,如果我给出了真实路径(C:\Users\SanWin \workspace\RoleAccessControl\data\ActivityLog.txt)它写入文件但是当项目要在不同的机器上运行时这必须改变,所以我用它来获取真实路径

ServletContext ctx = getServletContext();
        String path = ctx.getRealPath("/data/ActivityLog.txt");
        System.out.println(path);

当我打印时,我在控制台中收到以下消息

C:\Users\SanWin\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\RoleAccessControl\data\ActivityLog.txt

我不知道系统是怎么得到这条线的

.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\

这是在日食中,我期待类似的东西 C:\Users\SanWin\workspace\RoleAccessControl\data\ActivityLog.txt

如何获得我想要摆脱线条 (.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps) 的真实路径,我查看并做了我在互联网上看到的所有可能,但是失败,对不起,如果我发了重复的帖子,请见谅 感谢您的时间和回复

【问题讨论】:

  • 一般来说,您非常很少想在应用程序内部编写代码。如果你部署为战争,你不能。如果你重新部署,你可能会失去那里的一切。这是一种更简洁、更安全的方法,可以指定 Web 应用程序部署目录外部的目录,并改为在该目录中写入。

标签: java jsp servlets file-io filewriter


【解决方案1】:

在 Eclipse 的 Servers 视图中,您可以双击您的服务器以打开一个配置屏幕,该屏幕允许您设置不同的部署路径(至少在 Tomcat 中)。请注意,您只能在没有部署任何内容时修改该设置,否则您将看到选项灰显。

您得到的.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\ 是因为您有使用工作区元数据 选项。

无论如何,如果您将您的战争直接手动部署到 Tomcat webapps 文件夹中,而不使用 Eclipse,您将获得正确的路径。

换句话说,您的代码是正确的并且为您提供了正确的路径,您只是不喜欢您的应用程序的部署路径。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 2011-02-16
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多