Member 13809409 Ответов: 1

Мне нужно получить файлы с разным временным интервалом 1 час, 1 день.1 неделя


у меня есть папка с разными файлами с разными датами,которые мне нужно получить, если один часовой файл есть или нет, нужно отобразить имя файла
после этого 1 день файл должен отображаться

через 1 неделю должно появиться имя файла ..
Экс:

31-05-2018 папка внутри filename выглядит следующим образом : 31-05-2018_10-42-25_rakesh_hike_load_608_output.txt если мне нужно ввести данные за 1 день мне нужно отобразить этот файл

Что я уже пробовал:

<pre>package hellomongo;

import java.io.File;
import java.util.Date;

public class Timedate {
	     
	


	 public static void main(String[] args)
	{
	  String path = "/home/msr/hike";

	  String files;
	  File folder = new File(path);
	  File[] listOfFiles = folder.listFiles();

	 for (int i = 0; i < listOfFiles.length; i++)
	  {
		  System.out.println(listOfFiles[i].getName()+"\t"+new Date(listOfFiles[i].lastModified()));

	  }
	}
	
	        }

Richard MacCutchan

В чем же вопрос?

1 Ответов

Рейтинг:
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. Я это исправлю.

"Не работает" не имеет смысла. Вы получаете ошибки компиляции?
Если это так, проверьте номер строки, указанный в ошибке. Взгляните на эту линию и на то, что на нее жалуются.