我如何参考正确的目录?

时间:2009-10-03 08:57:00

标签: java directory

如果我的Java类位于:`

  

package org.gamehost.flyingame.BookManagementServlet.ModelClass

又名:

  

BookManagementSoftwareServlet /组织/ gamehost / flyingame / BookManagementServlet / ModelClass

并且在该类中,如果我想在执行此操作之后从目录中返回文件,例如html文件:

  

文件newFile =新文件(“HTMLFile.html”);

假设上面的代码将创建一个新文件,它是否会在

中创建它
  

BookManagementSoftwareServlet

目录或者,它是否会在此目录中创建它:

  

BookManagementSoftwareServlet /组织/ gamehost / flyingame / BookManagementServlet / ModelClass

如果不是,那么我是否应该这样做:

  

C://工作区/ BookManagementSoftwareServlet /组织/ gamehost / flyingame / BookManagementServlet / ModelClass

1 个答案:

答案 0 :(得分: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。

无用的样式注释:我总是发现最好将包名全部保存为小写,并使用驼峰大小写作为类名。我发现这会在阅读代码,查看堆栈跟踪等时减少混淆。