правильный способ использовать QFile :: write? - PullRequest
0 голосов
/ 04 июля 2018

Мне нужно записать n байт в файл, и у меня есть QTemporaryFile, как мне записать эти байты?

Я прочитал QIODevice::write документацию:

qint64 QIODevice :: write (const char * data, qint64 maxSize) Записывает в большинство maxSize байтов данных из данных на устройство. Возвращает номер байтов, которые были фактически записаны, или -1, если произошла ошибка.

похоже, мне нужен цикл для записи байтов, потому что нет получателя что он записывает все байты, он может вернуть управление после записи k байтов, где k <<code>n.

Я могу создать QDataStream из TemporaryFile, но функция QDataStream::writeRawData имеет то же ограничение:

int QDataStream :: writeRawData (const char * s, int len) Записывает len байтов от с до потока. Возвращает количество фактически записанных байтов или -1 при ошибке. Данные не закодированы.

так что в Qt нет функции, которая записывает точно n байтов или возвращает ошибку?

1 Ответ

0 голосов
/ 04 июля 2018

Как вы предлагаете отменить запись некоторых байтов, если нет ошибки, но записано меньше, чем n байтов? Особенно, если в файле уже есть данные (либо предыдущий writes, который был успешным, либо потому что вы добавляете).

Также вероятно, что любые дальнейшие попытки записи в файл, в котором не записаны все n байтов, также завершатся с ошибкой или запишут 0 без каких-либо внешних действий. Возникает мысль об исчерпании свободного дискового пространства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...