2014-10-28 16 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; 

} 
相关问题