【问题标题】:How do I refer to the right Directory?我如何参考正确的目录?
【发布时间】:2009-10-03 08:57:00
【问题描述】:

如果我的 Java 类在:`

包 org.gamehost.flyingame.BookManagementServlet.ModelClass

又名:

BookManagementSoftwareServlet/org/gamehost/flyingame/BookManagementServlet/ModelClass

在那个类中,如果我想从一个目录中返回一个文件,比如说一个 html 文件,在这样做之后:

文件 newFile = new File("HTMLFile.html");

假设上面的代码会创建一个新文件,会不会在

BookManagementSoftwareServlet

目录,或者,它会在这个目录中创建它吗:

BookManagementSoftwareServlet/org/gamehost/flyingame/BookManagementServlet/ModelClass

如果不是,我是否必须这样做:

C://Workspace/BookManagementSoftwareServlet/org/gamehost/flyingame/BookManagementServlet/ModelClass

【问题讨论】:

  • 可能 getServletContext().getRealPath() 会帮助你
  • AFAIK 意思是“也称为”:)
  • 感谢“翻译”。

标签: java directory


【解决方案1】:

可能两者都不是。它将转到当前用户目录,除非容器已修改此行为。 java.io.File javadoc 说:

相反,相对路径名必须 被解释为信息 取自其他路径名。经过 默认 java.io 中的类 包总是解析相对 针对当前用户的路径名 目录。此目录由 系统属性user.dir,并且是 通常是在其中的目录 已调用 Java 虚拟机。

容器通常会锁定文件创建,因此您可能会遇到安全错误。你没有提到你的容器,但这里有一些关于 Tomcat 6 & Security Managers 的信息。

如果这些文件是临时文件并重新生成,您可以在从SRV.4.7.1 Temporary Working Directories of the 2.5 servlet spec 中定义的javax.servlet.context.tempdir servlet 上下文属性返回的绝对路径中创建它们。

临时存储目录是 每个 servlet 上下文都需要。 Servlet 容器必须提供一个 每个人的私有临时目录 servlet 上下文,并使其可用 通过 javax.servlet.context.tempdir 上下文属性。对象 与属性关联的必须是 类型为 java.io.File。

一个无用的风格注释:我一直认为最好将包名全部保持小写并使用驼峰式大小写作为类名。我发现这在阅读代码、查看堆栈跟踪等时会减少混乱。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多