【问题标题】:Trying to update the file in src/web/prod folder (jsp)尝试更新 src/web/prod 文件夹 (jsp) 中的文件
【发布时间】:2010-01-12 02:21:02
【问题描述】:

我同时使用 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");

【问题讨论】:

    标签: java file jsp jboss path


    【解决方案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 中使用相对路径。您将依赖于当前工作目录,这可能因环境/情况而异。

    也就是说,您通常不想将文件写入网络内容。每当您重新部署 WAR 时,它们都会丢失。而是在 webapp 之外的其他地方创建一个固定的磁盘文件系统路径并使用它。或者更好的是,使用独立的 SQL 数据库:)

    【讨论】:

    • absolutePath 和 webcontentRoot 都指向一个位置及其:"C:\workspace\infweb\gen\jboss\jboss-4.2.2.GA\server\default\.\deploy\infweb.war \test\data.txt" 我真的希望它是 "C:\workspace\infweb\src\web\prod\test.txt" 可能是我只是混淆了路径而不完全理解部署时会发生什么.大声笑,是的,如果它在我手中,我会使用 sql,我的生活会轻松得多。
    猜你喜欢
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 2018-12-20
    • 2015-01-23
    • 1970-01-01
    • 2021-09-29
    • 2013-01-25
    相关资源
    最近更新 更多