Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有特定模式的Java读取文件_Java_Unix_File Io_Filenames - Fatal编程技术网

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

具有特定模式的Java读取文件,java,unix,file-io,filenames,Java,Unix,File Io,Filenames,我正在尝试用java程序中的模式格式从unix文件系统读取文件 文件名模式如下所示: "XYZ"+"abcd1234"+MMddyyyyHHmmss 例如:XYZabc123403222012101329 “abcd1234”的中间模式不是固定的,而是变化的,因此它将是字母数字的,总字符长度为7 我怎样才能以这种模式读取文件?文件可以包含文本或序列化对象 String path="/tmp/somedir"; final File folder = new File("/tmp/somedi

我正在尝试用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();
    }
String path=“/tmp/somedir”;
最终文件夹=新文件(“/tmp/somedir”);
列表文件名=新的ArrayList();
试一试{
对于(最终文件条目:folder.listFiles()){
if(fileEntry.isDirectory()){
listFilesForFolder(文件条目);
}否则{
//System.out.println(fileEntry.getName());
add(fileEntry.getName());
}
}
for(字符串str:文件名){
FileInputStream fileIn=newfileinputstream(路径+“/”+str);
}
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(异常e1){
e1.printStackTrace();
}

谢谢。

我想您可以使用正则表达式来过滤文件。下面是apache commons的doc类 这里有一个老问题。
您可以使用正则表达式。我现在也在用C#做同样的事情。我有来自客户端的文件,这些文件有一个共同的前缀,中间的一个日期,和一个通用的文件扩展名。p> 假设abc1234始终为七个字符长,则可以使用以下正则表达式模式

XYZ.{7}\d{14}

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

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

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


对于正则表达式,请查看。

我想您应该考虑制作自己的文件过滤器,请参阅:您必须在目录中搜索符合您要求的文件。不客气,谢谢您的感谢。很多人当然不会。祝你的项目好运。