Я пытаюсь отфильтровать файлы по дате и прочитать каждый файл.У меня есть метод find (), который читает каждое имя файла, и он возвращает файлы, начинающиеся с «B» в массиве.Второй метод filesort () возвращает все даты файла из имени файла, отправленного методом find ().В основном методе я хочу прочитать файл к определенной дате, которую я даю.если все файлы имеют одинаковую дату, он читает все файлы.Тем не менее, из файлов, один из файлов имеет другую дату, он выдаст ошибку.
public static String[] find(String rootPath){
File root = new File(rootPath);
// Filter files whose name start with "B"
FilenameFilter beginswithm = new FilenameFilter() {
public boolean accept(File directory, String filename) {
return filename.startsWith("B");
}
};
// array to store filtered file names
String[] files = root.list(beginswithm);
String[] no = { "nofile" };
if (files == null) {
return no;
}
return files;
}
public String filesort() throws ParseException {
String path = "C:";
String [] filesList = find(path);
for (String file : filesList) {
File st = new File(file);
String name=st.getName();
name= name.replaceAll("\\D+", "");
String Datename = name.substring(0, 8);
DateFormat formatter = new SimpleDateFormat("yyyymmdd");
Date date = (Date)formatter.parse(Datename);
SimpleDateFormat newFormat = new SimpleDateFormat("mm/dd/yyyy");
String finalString = newFormat.format(date);
return finalString;
}
return "error";
}
public static void main(String[] args){
String path = "C:";
String [] filesList = find(path);
for (String file : filesList) {
if(filesort().equals("04/17/2019"))//to read all files that has 04/17/2018
{
reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(path + "//" +file))));
String content;
while ((content = reader.readLine()) != null) {
System.out.println(content);
}
}
else if (!filesort().equals("04/17/2019")||filesort()==null ) {
System.out.println("incorect date");
}
}
this are the files I'm trying to read
BProce.Arr.20190416.server10.gz
BProce.Arr.20190417..ball10.gz
BProce.Arr.20190417.ball23.gz
, поскольку первый файл 16.04.2009, он выбрасывает неправильную датуЕсли у 3 из них есть 17.04.2009, он будет читать без проблем.но сейчас я хочу прочитать только файл с датой 04/17/2019