Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java File.listFiles()无法从绝对路径检索名称_Java_File_Ubuntu_File Listing - Fatal编程技术网

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

Java File.listFiles()无法从绝对路径检索名称,java,file,ubuntu,file-listing,Java,File,Ubuntu,File Listing,我正在使用上面的代码列出Ubuntu文档目录中的文件。如果我将文件夹名称替换为Java类文件所在的本地文件夹,同样的代码也会起作用。然而,当使用绝对路径时,我总是得到空指针异常,因为dirFiles是空的 有人能解释一下我的方法是否有错误吗 谢谢。蒂尔达~不是绝对路径。用当前用户的主目录替换它是典型unix shell的一个特性。在java程序中,应该使用System.getProperty(“user.home”)而不是tilda。tilda~不是绝对路径。用当前用户的主目录替换它是典型uni

我正在使用上面的代码列出Ubuntu文档目录中的文件。如果我将文件夹名称替换为Java类文件所在的本地文件夹,同样的代码也会起作用。然而,当使用绝对路径时,我总是得到空指针异常,因为dirFiles是空的

有人能解释一下我的方法是否有错误吗


谢谢。

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

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

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

,问题似乎出在源目录上。不要使用
~/Documents
,而是使用完整路径
/home/foo/Documents

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() );
        }
   }
}