Java File.listFiles()无法从绝对路径中检索名称

时间:2013-06-04 16:21:49

标签: java file ubuntu file-listing

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。

有人可以解释我的做法是否有任何错误。

感谢。

2 个答案:

答案 0 :(得分:2)

蒂尔达~不是绝对的道路。它是典型的unix shell的一个特性,可以用当前用户的主目录替换它。在java程序中,您应该使用System.getProperty ("user.home")而不是tilda。

答案 1 :(得分:1)

问题似乎与sourceDirectory有关。而不是~/Documents,请尝试使用完整路径/home/foo/Documents