2014-01-18 26 views
1

我已經編寫了簡單的java代碼來顯示Linux中的文件列表,以便使用它用於使用TCP的FTP程序(我正在一步一步地使用所有功能)。我在google搜索了大約半個小時後發佈了這個問題。Java文件列表:使用for循環的NPE

import java.io.*; 
class FileList 
{ 
public static void main(String args[]) 
{ 
String dirname="/home/vaibhav/Test"; 
File f1=new File(dirname); 
String sl[]=f1.list(); 
System.out.print(f1.list()+"......."+sl.length+" files found."); 
for(int i=0;i<sl.length;i++) 
{ 
System.out.print(sl[i]+" "); 
}  
} 
} 

輸出:

[email protected]:~/Java$ javac FileList.java 
[email protected]:~/Java$ java FileList 
Exception in thread "main" java.lang.NullPointerException 
    at FileList.main(FileList.java:10) 

我的目錄測試和Java內容:

[email protected]:~$ cd /home/vaibhav/Test 
[email protected]:~/Test$ dir 
1 2 
[email protected]:~/Test$ ls -al 
total 8 
drwxrwxrwx 2 vaibhav vaibhav 4096 Jan 18 15:04 . 
drwxr-xr-x 25 vaibhav vaibhav 4096 Jan 18 16:50 .. 
-rw-rw-rw- 1 vaibhav vaibhav 0 Jan 18 15:04 1 
-rw-rw-rw- 1 vaibhav vaibhav 0 Jan 18 15:04 2 
[email protected]:~/Test$ cd 
[email protected]:~$ cd /home/vaibhav/Java 
[email protected]:~/Java$ ls -al 
total 20 
drwxr-xr-x 2 vaibhav vaibhav 4096 Jan 18 16:52 . 
drwxr-xr-x 25 vaibhav vaibhav 4096 Jan 18 16:50 .. 
-rw-r--r-- 1 vaibhav vaibhav 990 Jan 18 16:52 FileList.class 
-rw-r--r-- 1 vaibhav vaibhav 477 Jan 18 16:52 FileList.java 
-rw-r--r-- 1 vaibhav vaibhav 487 Jan 18 16:52 FileList.java~ 

當我改變字符串目錄名稱爲/ home/Vaibhav的/ Java的是PWD過,程序執行好。

問題是什麼? 謝謝。

+0

什麼線#10? – PeterMmm

+0

for loop line is line 10 – javaEntu

+0

嗯......我懷疑這個,爲什麼我們沒有從'print'輸出。我認爲sl是空的。什麼給了'f1.isDirectory()'。 – PeterMmm

回答

0

不如試試這個:

File folder = new File("your/path"); 
File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) { 
     if (listOfFiles[i].isFile()) { 
     System.out.println("File " + listOfFiles[i].getName()); 
     } else if (listOfFiles[i].isDirectory()) { 
     System.out.println("Directory " + listOfFiles[i].getName()); 
     } 
    } 

希望這有助於你

+0

在發佈之前,我也嘗試過。但是有一篇文章http://stackoverflow.com/a/11643057/2642938表示使用list()比使用listFiles()更好。我的主要問題是「當我將String dirname改爲/ home/vaibhav/Java也是pwd時,程序執行得很好。」 – javaEntu

+0

你能否更清楚地解釋你的要求究竟是什麼@VAL – Raj

+0

顯示來自.../Test目錄的文件列表。 @ SanthoshKumar544 – javaEntu