2013-11-20 87 views
0

我正在嘗試將參數傳遞給方法。這個論點可以是一個文件或一個direcotry。如何知道agument是否是Java中的目錄或文件

public class ReadCsv { 

    String line = null; 
    BufferedReader br ; 

    public void readCsv(String arg) throws Exception{ 

     File file = new File(arg); 
     if(file.isDirectory()){ 
     for(File dir : file.listFiles()){ 

       System.out.println(file.getName()); 
       reader(dir); 
      } 
     } 
     else{ 
       reader(file); 

      } 
     } 

    public void reader(File file) throws Exception { 
     br = new BufferedReader(new FileReader(file)); 
     while((line=br.readLine())!=null){ 
      //Code 
    } 
} 

但是代碼不能正常工作,因爲我想。當我傳遞參數arg時,我必須確定它是一個文件還是一個目錄並根據它工作。任何人都可以請幫助我如何確定一個文件或目錄。如果arg是一個目錄,我的代碼運行循環4次。

+0

這不是很有趣,你已經在方法readCsv具有所期望的功能(即文件#isDirectory)? – Ingo

+0

您的ARG是DIR, 1>可能有其他目錄在該目錄下 2>您確定在DIR下(如果是目錄)都是文件。 對於第一種情況,我發佈了我的答案。 – HybrisFreelance

回答

1

你的代碼看起來不錯,看起來你只是輸出目錄(你已經命名爲'文件')而不是你命名爲'dir'的文件。

for(File dir : file.listFiles()) { 
    System.out.println(dir.getName()); //you were outputting file.getName() 
} 
+0

也如ankit337所說,它不是遞歸的,所以它不會處理嵌套的目錄。 –

1

FileisDirectory()isFile()方法,你可以用它來檢查的類型。

1

請參閱File官方文檔。還有如方法:

isFile(); 
isDirectory(); 
1

試試看.. 它打印所有的目錄和文件名。

IF嵌套目錄:

public class ReadCsv { 

    String line = null; 
    BufferedReader br ; 

    public void readCsv(String arg) throws Exception{ 

     File file = new File(arg); 
     checkIsDir(file); 
    } 

    public void checkIsDir(File file) throws Exception { 

     if(file.isDirectory()){ 

      System.out.println("Directory : "file.getName()); 
      for(File dir : file.listFiles()){ 
        checkIsDir(dir); 
      } 
     } 
     else{ 
       System.out.println("File : "file.getName()); 
       reader(file);  
      } 
    } 

    public void reader(File file) throws Exception { 
     br = new BufferedReader(new FileReader(file)); 
     while((line=br.readLine())!=null){ 
      //Code 
    } 
} 
+0

這是一個代碼改進(包括嵌套的目錄),它發生錯誤修復(輸出目錄名稱多次)沒有解釋。所以不是一個真正的答案。 –

+0

'@ Ross..'我已經在用於嵌套目錄的問題下做出評論。現在在這裏做一些編輯。謝謝 – HybrisFreelance

相關問題