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