我在测试中有以下代码
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
backup
和2012-07-23
文件夹都不存在
这里有什么不对?
答案 0 :(得分:10)
可能是因为Java不知道~
的含义。
~
是shell扩展,而不是有效的路径名。
答案 1 :(得分: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
。
答案 2 :(得分:0)
您是否在Windows系统上运行它?如果是这样,请考虑使用File.separator而不是“/”,以便代码与平台无关。
还使用System.getProperty(“user.home”))而不是“〜”使其与平台无关。