0

我正在尝试从 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();
    }

谢谢你。

4

3 回答 3

2

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

于 2012-08-22T19:05:07.730 回答
0

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

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

XYZ.{7}\d{14}

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

于 2012-08-22T19:05:18.930 回答
0

我推荐这个站点,您将了解如何从您的目录中获取所有文件。

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

对于正则表达式,请查看此链接

于 2012-08-22T19:13:46.020 回答