Java Can';我不能删除一个存在但我看不见的文件
我以前见过这个问题,并尝试使用垃圾收集器,但这对我来说不起作用 我使用Java Can';我不能删除一个存在但我看不见的文件,java,macos,Java,Macos,我以前见过这个问题,并尝试使用垃圾收集器,但这对我来说不起作用 我使用mkdirs()方法创建了一组目录。Java报告它们存在,但我无法在我的系统上看到它们应该在哪里。我使用的是Mac OS X Yosemite,所以我不知道这是Mac特有的问题还是Java中的bug 我的代码: import java.io.*; public class FileChecker { public static void main(String[] args) { File file =
mkdirs()
方法创建了一组目录。Java报告它们存在,但我无法在我的系统上看到它们应该在哪里。我使用的是Mac OS X Yosemite,所以我不知道这是Mac特有的问题还是Java中的bug
我的代码:
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
也不会产生任何结果。文件#delete()
是一种旧的java 1时代方法,它不会为您提供任何关于它无法删除的原因的信息
尝试使用将抛出一个IOException
,并说明失败的原因。File#delete()
是一个旧的java 1时代方法,它不会为您提供任何无法删除的信息
File file = new File("~/MyDirectory"); // in my home folder
尝试使用将引发IOException
并说明失败原因的
File file = new File("~/MyDirectory"); // in my home folder
“~”对于像bash
这样的shell和某些其他选择赋予它特殊含义的程序来说是特殊的。它对java.io.File
或操作系统本身都没有意义。您在这里创建的文件
对象在java进程的当前工作目录中引用了一个名为“~”的目录,然后在这个名为“~”的目录中引用了一个名为“MyDirectory”的目录
尝试将此行添加到程序中:
System.out.println(file.getAbsolutePath());
这将打印出java正在使用的文件的实际路径。一旦你知道这个“MyDirectory”的真正位置,你就可以清楚地知道为什么你不能删除它。例如,它可能是一个非空目录
“~”对于像bash
这样的shell和某些其他选择赋予它特殊含义的程序来说是特殊的。它对java.io.File
或操作系统本身都没有意义。您在这里创建的文件
对象在java进程的当前工作目录中引用了一个名为“~”的目录,然后在这个名为“~”的目录中引用了一个名为“MyDirectory”的目录
尝试将此行添加到程序中:
System.out.println(file.getAbsolutePath());
这将打印出java正在使用的文件的实际路径。一旦你知道这个“MyDirectory”的真正位置,你就可以清楚地知道为什么你不能删除它。例如,它可能是一个非空的目录。您是否有删除它的权限?您是否有删除它的权限?这并不能真正回答问题,但是+1可以帮助他们找到更好的方法。正是由于这个原因,File.delete()很糟糕。我无法告诉您这些年来我有多少次怀疑这个问题是什么,而且JVM几乎没有提供任何信息。很好的参考资料。它抛出了一些不同的异常,例如
DirectoryNotEmptyException
,这就是问题所在。但最重要的问题(为什么我首先找不到目录)是因为它是在我的NetBeans项目主页中创建的,而不是在我的用户主页中创建的。我想我应该使用System.getProperty(“user.home”)
来代替。这并不能真正回答问题,但是+1可以帮助他们找到更好的方法。正是由于这个原因,File.delete()很糟糕。我无法告诉您这些年来我有多少次怀疑这个问题是什么,而且JVM几乎没有提供任何信息。很好的参考资料。它抛出了一些不同的异常,例如DirectoryNotEmptyException
,这就是问题所在。但最重要的问题(为什么我首先找不到目录)是因为它是在我的NetBeans项目主页中创建的,而不是在我的用户主页中创建的。我想我应该用System.getProperty(“user.home”)
来代替。是的,就是这样。我现在使用的是System.getProperty(“user.home”)
。是的,就是这样。我现在使用的是System.getProperty(“user.home”)
。