Qt4: записать QByteArray в файл с именем файла?

У меня проблемы в Qt 4 с записью в нетекстовые файлы. У меня есть данные QByteArray, и я хочу сохранить их в файл с именем «some_name.ext» в определенном каталоге: «C: // MyDir». Как я могу это сделать? Обратите внимание, что содержание не является текстовым.

Формат «GIF», и он не поддерживается Qt.

QImage mainImage;
if (!mainImage.loadFromData(aPhoto.data))
return false;
if (!mainImage.save(imageName, imageFormat.toUtf8().constData()))
return false;

Я хочу как-то обойти это ограничение!

9

Решение

Чтобы записать QByteArray в файл:

QByteArray data;
// ... fill the array with data ...

QFile file("C:/MyDir/some_name.ext");
file.open(QIODevice::WriteOnly);
file.write(data);
file.close();

Не забудьте проверить на ошибки, конечно.

Также обратите внимание, что хотя это и отвечает на ваш вопрос, это, вероятно, не решит вашу проблему.

29

Другие решения

Вы можете использовать QDataStream для записи двоичных данных.

QFile file("outfile.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);

Тогда используйте

QDataStream & QDataStream::writeBytes ( const char * s, uint len )

или же

int QDataStream::writeRawData ( const char * s, int len )
1