Рейтинг:
2
Jochen Arndt
Использовать FilenameFilter (Java Platform SE 7 )[^] и передайте это кому-нибудь. listFiles()
:
FilenameFilter fileNameFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// Hourly files
String match = String.format("%02d-%02d-%04d_%02d", day, month, year, hour);
// Use this for daily files
//String match = String.format("%02d-%02d-%04d", day, month, year);
// When having a Date or Calendar use (without "_%1$tH" for daily)
//String match = String.format("%1$td-%1$tm-%1$tY_%1$tH", date);
return name.startsWith(match);
}
};
File[] listOfFiles = folder.listFiles(fileNameFilter);
Вышеизложенное будет работать для почасовых и ежедневных файлов. Еженедельные файлы более сложны и требуют, например, создания семидневных строк соответствия (в виде массива) и сравнения со всеми. Затем с помощью
Календарь (Java Platform SE 7 )[
^] введите и увеличьте это число в цикле проще, чем выполнять вычисление даты вручную (Java
Date
тип не имеет метода add в то время как
Calendar
тип имеет).
Member 13809409
нужно ли мне объявлять переменные день,месяц,год,час?
Jochen Arndt
Если вы собираетесь их использовать. Вы не сказали нам, как указывается дата, которую нужно искать.
"как читать файлы там"
Вероятно, получая каждое имя из массива listOfFiles[] и открывая их?
Это зависит от того, что вы собираетесь делать с файлами.
Member 13809409
день, месяц, год, час эти переменные получают ошибку
Jochen Arndt
Это пример кода, показывающий вам, как это сделать в целом.
Но сначала вы должны указать, для какого дня, часа или недели вы хотите получить имена файлов и поместить эту информацию в некоторые переменные. Это может быть несколько переменных для каждой детали, данных или календаря.
Member 13809409
я не в состоянии сделать все еще получая ошибки
Jochen Arndt
Я не могу этого сделать, потому что до сих пор не знаю, как на самом деле определяются критерии поиска.
Для начала с вашего примера используйте:
int day = 31;
int месяц = 5;
int year = 2018;
int hour = 10;
или
Календарная дата;
дата.установить(2018, 5, 31, 10, 0);
Member 13809409
это не работает
Jochen Arndt
Пожалуйста, имейте в виду, что я не имел доступа к вашему жесткому диску или не могу читать ваши мысли.
Однако @override должен быть непосредственно перед функцией accept. Я это исправлю.
"Не работает" не имеет смысла. Вы получаете ошибки компиляции?
Если это так, проверьте номер строки, указанный в ошибке. Взгляните на эту линию и на то, что на нее жалуются.