我的应用程序必须创建一个.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");
}
}
答案 0 :(得分:2)
如果无法创建文件,则应该收到错误消息。检查应用程序的错误处理。
如果你没有,那么该文件可能已创建,但不是你想要的。
我建议在代码中添加一些日志记录:
log.debug("path="+myAppDir.getAbsolutePath());
log.debug("url="+databaseFileLocation);
或者,使用Process Monitor查看您的应用正在执行的操作。