Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > собрать файлы за 1 день и суммировать в размерах


Автор: bulat01 10.9.2013, 07:43
Здравствуйте все,
помогите реализовать логику,

В аргументе задаю - путь папки в сети(на другом компе).

Скрипт читает содержимое папки.

УСЛОВИЕ: собрать файлы за 1 день и суммировать в размерах (МБ) 

к примеру,
D:\\test_folder

09-09-2013 9:38 AM - test 1  10 MB
09-09-2013 9:38 AM - test 2  10 MB
09-09-2013 9:38 AM - test 3  10 MB
09-09-2013 9:38 AM - test 4  10 MB
09-09-2013 9:38 AM - test 5  10 MB

10-09-2013 10:38 AM - test 5   10 MB
10-09-2013 11:38 AM - test 5   10 MB
10-09-2013 12:38 AM - test 5   10 MB


-------------------------------------------------
Результат скрипта:

Дата:                       Общий размер файлов за день:
09-09-2013              50 MB
10-09-2013              30 MB

С уважением!






Автор: Samotnik 12.9.2013, 00:35
Java7
Код

public class MainTest {
    static SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

    public static void main(String[] args) throws IOException, ParseException {
        File rootFolder = new File(args[0]);
        Map<Date, Long> dateLongMap = new HashMap<Date, Long>();
        if (rootFolder.isDirectory()) {
            File[] files = rootFolder.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.isFile()) {
                        Path path = Paths.get(file.getAbsolutePath());
                        BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);
                        FileTime creationTime = attributes.creationTime();
                        Date formattedDate = sdf.parse(sdf.format(new Date(creationTime.toMillis())));
                        Long fileSize = dateLongMap.get(formattedDate);
                        if (fileSize != null) {
                            dateLongMap.put(formattedDate, fileSize + attributes.size());
                        } else {
                            dateLongMap.put(formattedDate, attributes.size());
                        }
                    }
                }
            }
        }
        System.out.println(dateLongMap.size());
        for (Map.Entry<Date, Long> fileSet : dateLongMap.entrySet()) {
            System.out.println(fileSet.getKey() + " : " + (fileSet.getValue()/1024));
        }
    }
}


Добавлено через 1 минуту и 50 секунд
1. Кривовато получилось smile много скобок
2. При выводе даты, формат нужно использовать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)