未在Windows Server上创建Java文件

时间:2013-11-25 10:53:21

标签: java

我的应用程序必须创建一个.db文件才能工作。如果此文件不存在,我的应用程序将创建它。但是,在某些版本的Windows上,例如Windows Server,永远不会创建该文件。此外,我确信该文件夹有完整的读/写权限。

这是我创建文件的代码:

String databaseFileLocation = "";
String fileSeparator = System.getProperty("file.separator");
String homeDir = System.getProperty("user.home");
File myAppDir = new File(homeDir, ".someApp");

databaseFileLocation = "jdbc:sqlite:" + myAppDir + fileSeparator + "history_" + userID + ".db";

Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection(databaseFileLocation);
Statement stat = conn.createStatement();
stat.executeUpdate("CREATE TABLE IF NOT EXISTS chatHistory (channelID, sender, message, recipient, time);");

它适用于Win 7,Win XP Win Vista等。但是在Win Server上它没有被创建。即使我有权限。

任何可能导致这种情况的想法?

修改

这就是我创建目录的方式:

        String homeDir = System.getProperty("user.home");
        File myAppDir = new File(homeDir, ".someApp");

         // if the directory does not exist, create it
        if (!myAppDir.exists()) {
            System.out.println("creating directory: " + myAppDir);
            boolean result = myAppDir.mkdir();

            if (result) {
                System.out.println("DIR created");
            }
        }

1 个答案:

答案 0 :(得分:2)

如果无法创建文件,则应该收到错误消息。检查应用程序的错误处理。

如果你没有,那么该文件可能已创建,但不是你想要的。

我建议在代码中添加一些日志记录:

log.debug("path="+myAppDir.getAbsolutePath());
log.debug("url="+databaseFileLocation);

或者,使用Process Monitor查看您的应用正在执行的操作。