2013-06-04 55 views
0
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类文件所在的本地文件夹,则相同的代码有效。 HOwever,当使用绝对路径时,我总是得到NULL指针异常,因为dirFiles为NULL。Java File.listFiles()无法检索绝对路径中的名称

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

谢谢。

回答

1

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

2

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