具有特定模式的Java读取文件
我正在尝试用java程序中的模式格式从unix文件系统读取文件 文件名模式如下所示:具有特定模式的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
"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
对于正则表达式,请查看。我想您应该考虑制作自己的文件过滤器,请参阅:您必须在目录中搜索符合您要求的文件。不客气,谢谢您的感谢。很多人当然不会。祝你的项目好运。