【问题标题】:Regex to replace a folder name in poll path in java正则表达式替换java中轮询路径中的文件夹名称
【发布时间】:2019-07-10 18:20:21
【问题描述】:

我有一个相对路径来获取该文件夹中列出的文件:

文件夹名称:ReadFiles

我只是使用File pollFile = new File("ReadFiles") 来读取该文件夹中的所有文件。

现在文件夹变成“ReadFiles/201907101418”,文件夹名称和日期范围一直在变化。

有没有什么方法可以使用正则表达式来替换那个日期特定的文件夹并让所有的文件在它下面监听?

【问题讨论】:

  • 为什么不在/上拆分?
  • 如果我也拆分并使用它,日期范围的文件夹名称一直在变化,必须使用正则表达式来匹配
  • 我还是不明白你为什么不能分裂?举一些会搞砸的例子
  • 你不能只读取“ReadFiles”文件夹的所有子文件夹吗?我认为您的问题描述中缺少某些内容。您不能真正使用正则表达式来选择您需要的文件,但您可以使用一个来遍历所有子文件夹/文件。虽然真的不清楚你在做什么,我认为这个问题需要更多的阐述。
  • @gnomed 问题是 ReadFiles 文件夹中有许多子文件夹,我只需要与此正则表达式匹配的文件夹 (20\\d{2})(\\d{2})( \\d{2})(\\d{2})(\\d{2}) 我不想循环其中的所有文件夹,因为我不需要它们。所以,我想知道我是否可以通过 'ReadFiles/(20\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2 })' 作为 new File() 的参数并直接从中读取所有文件

标签: java regex file


【解决方案1】:

您可以使用 FileFilter 来检查子文件夹的名称以匹配模式:

package be.test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class FileTest {

    public static void main(String[] args) throws IOException {
        File f=new File("ReadFiles");
        File[] datefolders=f.listFiles(new FileFilter() {

            @Override
            public boolean accept(File pathname) {
                return pathname.isDirectory() && pathname.getName().matches("20\\d{10}");
            }
        });
        for (File subf:datefolders)
        {
            File[] myfiles=subf.listFiles();
            for (File myfile:myfiles)
            {
                System.out.println("Found file: "+myfile.getAbsolutePath());
                // do your stuff with the files in myfile;
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2014-08-03
    • 2018-12-07
    • 2018-08-21
    • 2021-06-05
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    相关资源
    最近更新 更多