【问题标题】:read single file type from directory containing multiple file types java从包含多个文件类型java的目录中读取单个文件类型
【发布时间】:2014-10-28 17:25:23
【问题描述】:

是否可以从包含多种文件类型(如 cvs、txt、doc、xml、html 等)的目录中读取单一类型的文件(如 CSV 或 txt)

我的问题是我必须提供 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
    }

}

请给点建议。

【问题讨论】:

标签: java file csv file-type


【解决方案1】:

此代码将返回与给定扩展名匹配的每个文件(在您的情况下为 .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;

}

【讨论】:

    【解决方案2】:

    您可以在 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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      • 1970-01-01
      相关资源
      最近更新 更多