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