0

所以我试图在网页文件夹中动态创建一个文件夹。我正在制作一个游戏数据库。每次添加游戏时,我都会这样做:

public void addGame(Game game) throws DatabaseException {
    em.getTransaction().begin();        
    em.persist(game);   
    em.getTransaction().commit();
    File file = new File("C:\\GameDatabaseTestFolder");
    file.mkdir();      
}

所以一切都在这里工作。文件 get 已创建。但我想创建这样的文件夹:

public void addGame(Game game) throws DatabaseException {
    em.getTransaction().begin();        
    em.persist(game);   
    em.getTransaction().commit();
    File file = new File(game.getId()+"/screenshots");
    file.mkdir();      
}

或类似的东西。所以它将在我的 jsp 文件所在的位置创建,并且它的 id 会在游戏中消失。我不明白默认情况下创建文件夹的位置。

提前谢谢你,大卫

4

1 回答 1

0

默认情况下,它相对于“当前工作目录”,即在 Java 运行时环境启动服务器时当前打开的目录。这可能是例如/path/to/tomcat/bin、 或/path/to/eclipse/workspace/project等,具体取决于服务器的启动方式。

您现在应该意识到这种情况在 Web 应用程序内部是无法控制的。

您也不想将其存储在扩展的 WAR 文件夹中(您的 JSP 所在的位置),因为任何更改都会在您重新部署 WAR 时丢失(原因很简单,这些文件不包含在原始 WAR 中) .

而是使用绝对路径。例如

String gameWorkFolder = "/path/to/game/work/folder";
new File(gameWorkFolder, game.getId()+"/screenshots");

您可以通过将其作为属性文件设置或 VM 参数提供来使其可配置。

也可以看看:

于 2012-04-05T18:15:05.837 回答