【问题标题】:Java Read file(s) with particular patternJava 读取具有特定模式的文件
【发布时间】:2012-08-22 18:53:24
【问题描述】:

我正在尝试在 java 程序中从 unix 文件系统中读取具有模式格式的文件。

文件名模式如下:

"XYZ"+"abcd1234"+MMddyyyyHHmmss

例如:XYZabc123403222012101329

“abcd1234”的中间模式不是固定的而是变化的,所以是字母数字,总字符长度为7。

如何读取具有这种模式的文件?该文件可以包含文本或序列化对象。

String path="/tmp/somedir";

final File folder = new File("/tmp/somedir");
List<String> fileNames = new ArrayList<String>();

    try {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFilesForFolder(fileEntry);
            } else {
                //System.out.println(fileEntry.getName());
                fileNames.add(fileEntry.getName());
            }
        }

        for(String str: fileNames) {
            FileInputStream fileIn = new FileInputStream(path+"/"+str);
        }

    } catch(FileNotFoundException e) {
        e.printStackTrace();
    } catch(Exception e1) {
        e1.printStackTrace();
    }

谢谢。

【问题讨论】:

标签: java unix file-io filenames


【解决方案1】:

我认为您可以使用正则表达式来过滤文件。这是 apache commons 的文档类 http://commons.apache.org/io/api-release/org/apache/commons/io/filefilter/RegexFileFilter.html 这是一个关于它的老问题。 Java regexp for file filtering

【讨论】:

    【解决方案2】:

    您也许可以使用正则表达式。我现在在 C# 中做同样的事情。我有来自客户端的文件,这些文件具有共同的前缀、中间的日期和共同的文件扩展名。

    假设 abc1234 总是七个字符长,您可以使用以下正则表达式模式。

    XYZ.{7}\d{14}

    .{7} 表示任何字符最多可以出现七次。 \d{14} 表示它最多可以计算 14 位数字。

    【讨论】:

    • 不客气,谢谢你感谢我。很多人肯定不会。祝你的项目好运。
    【解决方案3】:

    我推荐this site,您将了解如何从您的目录中获取所有文件。

    在此之后,在方法中:accept 对其参数应用正则表达式:name

    对于正则表达式,请查看this link

    【讨论】:

      猜你喜欢
      • 2019-10-20
      • 2012-08-19
      • 2014-06-23
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多