2013-06-04 19 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")而不是蒂爾達。