1

我在测试中有以下代码

public class TestMe {
  private static final String BACKUP_DIR_PATH = "~/backup";

  @Test
  public static void createBackupDir() throws IOException {
    File path = new File(BACKUP_DIR_PATH + "/" + getFolderName()).getCanonicalFile();
    System.out.println(path.mkdirs());
  }

  // returns 2012-07-23
  private static String getFolderName() {
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date = new Date();
    return dateFormat.format(date).toString();
  }
}

当我运行此测试时,它会返回false

backup2012-07-23文件夹都不存在

这里有什么不正确的?

4

3 回答 3

10

可能是因为Java不知道是什么~意思。

~是一个 shell 扩展,不是一个有效的路径名。

于 2012-07-24T20:47:25.980 回答
4

尝试这个:

 private static final File HOME_DIR = new File(System.getProperty("user.home"));
 private static final File BACKUP_DIR = new File(HOME_DIR, "backup");

然后从那里去。通常,最好避免像您正在做的那样通过附加字符串来构建路径。请改用这些File方法来构建您的路径。

请注意,检索用户的主目录属性需要任何已安装的安全管理器的批准,因此您的代码应该准备好处理SecurityException.

于 2012-07-24T20:52:25.327 回答
0

你是在windows系统上运行吗?如果是这样考虑使用 File.separator 而不是“/”,所以代码是平台独立的。

还使用 System.getProperty("user.home")) 而不是 "~" 使其与平台无关。

于 2012-07-24T20:50:37.323 回答