之前我已经看过这个问题,并试图使用垃圾收集器,但这对我没用。
我使用mkdirs()
方法创建了一组目录。 Java报告它们存在,但我无法在我的系统中看到它们应该存在的位置。我使用的是Mac OS X Yosemite,所以我不知道这是Mac特有的问题还是Java中的错误。
我的代码:
import java.io.*;
public class FileChecker {
public static void main(String[] args) {
File file = new File("~/MyDirectory"); // in my home folder
System.out.println("Exists: " + file.exists()); // true
System.out.println("Can read: " + file.canRead()); // true
System.out.println("Can write: " + file.canWrite()); // true
System.out.println("Can execute: " + file.canExecute()); // true
System.gc();
System.out.println("Deleted: " + file.delete()); // still false
}
}
当我在Finder中打开我的主目录~
时,该文件夹不会出现。在终端中执行ls
也不会产生任何效果。
答案 0 :(得分:3)
File file = new File("~/MyDirectory"); // in my home folder
“〜”特别适用于像bash
这样的shell以及某些选择赋予其特殊含义的其他程序。它对java.io.File
或操作系统本身没有意义。你在这里创建的File
对象引用了java进程当前工作目录中名为“〜”的目录,然后是这个名为“〜”目录的名为“MyDirectory”的目录。
尝试将此行添加到您的程序中:
System.out.println(file.getAbsolutePath());
这将打印出java正在使用的文件的实际路径。一旦你知道这个“MyDirectory”到底在哪里,你可能会明白为什么你不能删除它。例如,它可能是一个非空的目录。