import java.io.File;
public class FileDemo {
public static void main(String[] args) {
String sourceDirectory = "~/Documents";
System.out.println(sourceDirectory);
File dir = new File(sourceDirectory);
File[] dirFiles = dir.listFiles();
for (File file : dirFiles)
{
System.out.println( file.getName() );
}
}
}
我使用上面的代码列出Ubuntu中Documents目录中的文件。如果我将文件夹名称替换为Java类文件所在的本地文件夹,则相同的代码可以正常工作。在使用绝对路径时,我总是得到NULL指针异常,因为dirFiles是NULL。
有人可以解释我的做法是否有任何错误。
感谢。
答案 0 :(得分:2)
蒂尔达~
不是绝对的道路。它是典型的unix shell的一个特性,可以用当前用户的主目录替换它。在java程序中,您应该使用System.getProperty ("user.home")
而不是tilda。
答案 1 :(得分:1)
问题似乎与sourceDirectory有关。而不是~/Documents
,请尝试使用完整路径/home/foo/Documents