2014-10-28 51 views
0

是否可以從包含多種文件類型的目錄(比如cvs,txt,doc,xml,html等)讀取單個類型的文件(比如CSV或txt)等)。從包含多種文件類型的目錄讀取單個文件類型java

我的問題是我必須提供mainDirectory的路徑作爲輸入,其中進一步有層次的子目錄裏面。當我進一步潛入時,我特別需要在這些目錄中讀取和處理CSV文件。

我完成了使用遞歸禮貌的多層文件夾遍歷,其中包含mainDirectory中文件的名稱和總數。我也完成了讀取和CSV文件的邏輯。我需要做的只是獲取CSV文件的路徑並對其進行處理。

我使用下文提到的代碼用於遍歷多個文件夾,並獲得名字: -

package org.ashu.input; 

import java.io.File; 

/** 
* 
* @author ashutosh 
*/ 
public class MultiDir { 

    private int fileCount; 

    public void readFile(File f){ 
     System.out.println(f.getPath()); 
     fileCount++; 
    } 

    public void readDir(File f){ 
     File subdir[] = f.listFiles(); 
     for(File f_arr : subdir){ 
      if(f_arr.isFile()){ 
       this.readFile(f_arr); 
      } 
      if(f_arr.isDirectory()){ 
       this.readDir(f_arr); 
      } 
     } 
    } 

    public static void main(String[] args){ 
     MultiDir md = new MultiDir(); 
     File mainDir = new File("/Users/ashutosh/Downloads/main_directory"); 
     md.readDir(mainDir); 
     System.out.println(md.fileCount);//all file count = 1576, need to specifically get CSV 
    } 

} 

任何建議請。

+0

RTFM:HTTP:/ /docs.oracle.com/javase/8/docs/api/java/io/File.html#listFiles-java.io.FilenameFilter- – ControlAltDel 2014-10-28 17:30:17

回答

0

您可以簡單地檢查readDir()方法中文件的擴展名。下面尋找JPG格式,你可以用你想要的擴展

public void readDir(File f){ 
    File subdir[] = f.listFiles(); 
    for(File f_arr : subdir){ 
     if(f_arr.isFile() && f_arr.getName().endsWith(".jpg")){ 
      this.readFile(f_arr); 
     } 
     if(f_arr.isDirectory()){ 
      this.readDir(f_arr); 
     } 
    } 
} 
+0

謝謝!這樣可行 :) – Ashu 2014-10-29 15:48:23

0

該代碼將返回每個文件該擴展匹配(在你的情況的.csv):

public static List<File> getFiles(String extension, final File folder) 
{ 

    extension = extension.toUpperCase(); 

    final List<File> files = new ArrayList<File>(); 
    for (final File file : folder.listFiles()) 
    { 

     if (file.isDirectory()) 
      files.addAll(getFiles(extension, file)); 
     else if (file.getName().toUpperCase().endsWith(extension)) 
      files.add(file); 

    } 

    return files; 

} 
相關問題