Название: Как считать объёмный файл в qbytearray? Отправлено: Павелъ от Май 05, 2017, 14:34 Доброго времени суток.
Сделал программку для подсчёта контрольных сумм файлов и папок. Если файлы небольшие, то QByteArray с лёгкостью принимает file.readAll(). Но, если файл слишком большой, то QByteArray становится пустым. Как взять контрольную сумму объёмного файла? Можно считывать файл по частям в несколько QByteArray и от каждого QByteArray брать контрольную сумму, а потом - всё в один QByteArray и от него уже контрольную сумму (так я делаю для папок), но для файла уже получится ненастоящая контрольная сумма. Как решить проблему? Название: Re: Как считать объёмный файл в qbytearray? Отправлено: __Heaven__ от Май 05, 2017, 14:40 http://stackoverflow.com/questions/16383392/how-to-get-the-sha-1-md5-checksum-of-a-file-with-qt
Название: Re: Как считать объёмный файл в qbytearray? Отправлено: Павелъ от Май 05, 2017, 15:04 http://stackoverflow.com/questions/16383392/how-to-get-the-sha-1-md5-checksum-of-a-file-with-qt Спасибо, работает! Только форма зависает. Я для папок делал QApplication::processEvent. Придётся в отдельный поток эту функцию засовывать, но тогда для папок каждый файл будет обрабатываться через создаваемый поток. Название: Re: Как считать объёмный файл в qbytearray? Отправлено: kambala от Май 05, 2017, 15:06 папку можно рассматривать как особый «файл»
Название: Re: Как считать объёмный файл в qbytearray? Отправлено: __Heaven__ от Май 05, 2017, 15:11 но тогда для папок каждый файл будет обрабатываться через создаваемый поток. Что плохого? а потом - всё в один QByteArray и от него уже контрольную сумму А дополнительный вызов QCryptographicHash::addData не избавляет от манипуляций со склейкой?Название: Re: Как считать объёмный файл в qbytearray? Отправлено: qate от Май 05, 2017, 21:20 если проверять нужно только в linux, то можно встроенную md5sum использовать (через qprocess)
она и по каждому файлу и итог выдаст но если и в венде и в linux надо, то одинаковой утилиты нет (если не тащить кусок cygwin) лучше написать свою функцию, в потоке (qtconcurent) Название: Re: Как считать объёмный файл в qbytearray? Отправлено: Павелъ от Май 11, 2017, 11:17 Всем спасибо, засунул в поток, всё нормально.
|