Russian Qt Forum
Ноябрь 24, 2024, 02:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: qfile Не читает файл целиком  (Прочитано 5672 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Сентябрь 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 чтобы отправить во вложении
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Сентябрь 30, 2017, 16:35 »

прав может недостаточно? fg.open() возвращает false?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #2 : Сентябрь 30, 2017, 16:53 »

прав достаточно возвращает true. прога из под рута работает.
в файле есть какие то специфические символы скорее всего но как его считать непонятно
« Последнее редактирование: Сентябрь 30, 2017, 17:03 от koldun90 » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Сентябрь 30, 2017, 17:08 »

readAll возвращает QByteArray, а не QString. Вот в QByteArray будет весь файл.
Записан
Bepec
Гость
« Ответ #4 : Сентябрь 30, 2017, 19:00 »

QString обрезает получаемую строку по символам конца строки.
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #5 : Октябрь 01, 2017, 09:53 »

короче я понял в чем была проблема. Оказывается разделителем в файле используются символы '\000' вот поэтому и читался не весь файл. я считал все в qbytearray заменил "000" на "=" и затем перевел все в qstring так все данные из файла считал


ps дурацкий формат cups наверно
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #6 : Октябрь 01, 2017, 17:14 »

Вам же сказано было, что readAll возвращает QByteArray, а вы используете QString. Что же вы поняли?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #7 : Октябрь 01, 2017, 19:38 »

Код
C++ (Qt)
QString df=fg.readAll();


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


Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #8 : Октябрь 01, 2017, 20:01 »

эта конструкция присвоения не подводила не разу.
Всё когда случается в первый раз. Улыбающийся
А вообще так лучше не делать, неявные преобразования - зло. К тому же может измениться поведение таких преобразований, и работающая ранее программа, может перестать работать.
« Последнее редактирование: Октябрь 01, 2017, 20:41 от Old » Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #9 : Октябрь 01, 2017, 20:37 »

эта конструкция присвоения не подводила не разу.
Это что означает - что вы ни разу не использовали  текстовый редактор для редактирования двоичных файлов, да?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.175 секунд. Запросов: 22.