Russian Qt Forum

Qt => Вопросы новичков => Тема начата: koldun90 от Сентябрь 30, 2017, 12:16



Название: qfile Не читает файл целиком
Отправлено: koldun90 от Сентябрь 30, 2017, 12:16
Здравствуйте пытаюсь считать файл заданий печати находящий в /var/spool/cups
но почему то файл считывается не весь. Не понятно почему тк он маленький 866 байт

вот собственно код

Код
C++ (Qt)
#include <QCoreApplication>
#include <QFile>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   QFile fg("/var/spool/cups/c00001");
   if (fg.open(QIODevice::ReadOnly))
   {
       QString df=fg.readAll();
       fg.close();
   }
   return 0;
}
 

сам файл прикрепляю
непонятно почему он его не может прочитать?
В чем может быть проблема

ps: файл переименовал c00001 в  c00001.txt чтобы отправить во вложении


Название: Re: qfile Не читает файл целиком
Отправлено: kambala от Сентябрь 30, 2017, 16:35
прав может недостаточно? fg.open() возвращает false?


Название: Re: qfile Не читает файл целиком
Отправлено: koldun90 от Сентябрь 30, 2017, 16:53
прав достаточно возвращает true. прога из под рута работает.
в файле есть какие то специфические символы скорее всего но как его считать непонятно


Название: Re: qfile Не читает файл целиком
Отправлено: Old от Сентябрь 30, 2017, 17:08
readAll возвращает QByteArray, а не QString. Вот в QByteArray будет весь файл.


Название: Re: qfile Не читает файл целиком
Отправлено: Bepec от Сентябрь 30, 2017, 19:00
QString обрезает получаемую строку по символам конца строки.


Название: Re: qfile Не читает файл целиком
Отправлено: koldun90 от Октябрь 01, 2017, 09:53
короче я понял в чем была проблема. Оказывается разделителем в файле используются символы '\000' вот поэтому и читался не весь файл. я считал все в qbytearray заменил "000" на "=" и затем перевел все в qstring так все данные из файла считал


ps дурацкий формат cups наверно


Название: Re: qfile Не читает файл целиком
Отправлено: sergek от Октябрь 01, 2017, 17:14
Вам же сказано было, что readAll возвращает QByteArray, а вы используете QString. Что же вы поняли?


Название: Re: qfile Не читает файл целиком
Отправлено: koldun90 от Октябрь 01, 2017, 19:38
Код
C++ (Qt)
QString df=fg.readAll();


эта конструкция присвоения не подводила не разу.




Название: Re: qfile Не читает файл целиком
Отправлено: Old от Октябрь 01, 2017, 20:01
эта конструкция присвоения не подводила не разу.
Всё когда случается в первый раз. :)
А вообще так лучше не делать, неявные преобразования - зло. К тому же может измениться поведение таких преобразований, и работающая ранее программа, может перестать работать.


Название: Re: qfile Не читает файл целиком
Отправлено: sergek от Октябрь 01, 2017, 20:37
эта конструкция присвоения не подводила не разу.
Это что означает - что вы ни разу не использовали  текстовый редактор для редактирования двоичных файлов, да?