Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Antinachai от Ноябрь 19, 2012, 22:59



Название: Запись на диск
Отправлено: Antinachai от Ноябрь 19, 2012, 22:59
Привет всем.
Подскажите пожалуйста какой класс использовать?

Требуется записать двоичные данные на диск, когда это потребуется.
Таким функционалом обладаем TMemoryStream в Delphi.
И я не знаю какой класс использовать.
QDataStream - увы пишет сразу либо я некорректно использую его.

примерно нужен такой код

например по нажатию кнопки создаем:
ИмяКласса memoryStream = new ИмяКласса;

по нажатию второй кнопки:
memoryStream.Write((char*)buffer, length);

по нажатию третьей кнопки:
memoryStream.writeTofile("example.data");

Подскажите возможно ли такое? Если да, то как сделать?


Название: Re: Запись на диск
Отправлено: mutineer от Ноябрь 19, 2012, 23:01
По второй кнопке пиши в QByteArray, а по третьей записывай его в файл


Название: Re: Запись на диск
Отправлено: Antinachai от Ноябрь 19, 2012, 23:06
а если по второй кнопке надо несколько раз записать?
тоесть с сети приходят данные,  и если пользователь например прервет получение данных, то нет смысла записывать в файл недокачанные данные.


Название: Re: Запись на диск
Отправлено: mutineer от Ноябрь 19, 2012, 23:53
Не понял вопроса


Название: Re: Запись на диск
Отправлено: kambala от Ноябрь 20, 2012, 00:14
дописывать — QByteArray::append() или +=


Название: Re: Запись на диск
Отправлено: Antinachai от Ноябрь 20, 2012, 01:51
Спасибо. вопрос решен.

Код:
QByteArray buffer;

if (dataBuffer)
    {
        buffer.append((char*)dataBuffer, length);
    }

       QFile bufferFile;
        bufferFile.setFileName(cacheDir + externAid + ".mp3");
        bufferFile.open(QFile::WriteOnly);
   
        bufferFile.write(buffer, buffer.size());

        bufferFile.flush();
        bufferFile.close();