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 类文件所在的本地文件夹,则相同的代码可以工作。但是,当使用绝对路径时,我总是得到 NULL 指针异常,因为 dirFiles 是 NULL。

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

谢谢。

4

2 回答 2

2

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

于 2013-06-04T16:30:56.190 回答
1

问题似乎出在 sourceDirectory 上。而不是~/Documents,尝试使用完整路径/home/foo/Documents

于 2013-06-04T16:34:26.817 回答