Java读取具有特定模式的文件

时间:2012-08-22 18:53:24

标签: java unix file-io filenames

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

谢谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

XYZ。{7} \ d {14}

。{7}表示任何角色最多可以出现七次。 \ d {14}表示它最多可计入14位数。

答案 2 :(得分:0)

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

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

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