Соединить имя файла и содержимое в QByteArray

Рейтинг: 1Ответов: 1Опубликовано: 16.12.2014

Есть имя файла, переведенное в QByteArray.
Есть содержимое файла в QByteArray.

Как добавить имя файла, затем содержимое в единый QByteArray, чтобы их можно было потом распарсить?

Ответы

▲ 2

Создание:

QByteArray create(const QByteArray &fname, const QByteArray &fdata) {
   QByteArray data;

   QBuffer buffer(&data);
   buffer.open(QIODevice::WriteOnly);

   QDataStream stream(&buffer);
   stream << fname << fdata;

   return data;
}

Парсинг:

void parse(QByteArray &data, QByteArray &fname, QByteArray &fdata) {
   QBuffer buffer(&data);
   buffer.open(QIODevice::ReadOnly);

   QDataStream stream(&buffer);
   stream >> fname >> fdata;
}

QDataStream внесёт в буфер два QByteArray раздельно. Можно без проблем сохранять одинаковые типы Qt-контейнеров, поскольку каждый так или иначе сохраняет свой собственный размер автоматом при сериализации.