Глава 12. Ввод—вывод
Глава 12. Ввод—вывод
Почти в каждом приложении приходится читать или записывать файлы или выполнять другие операции ввода—вывода. Qt обеспечивает великолепную поддержку ввода—вывода при помощи QIODevice — мощной абстракции «устройств», способных читать и записывать блоки байтов. Qt содержит следующие подклассы QIODevice:
• QFile — получает доступ к файлам, находящимся в локальной файловой системе или внедренным в исполняемый модуль,
• QTemporaryFile — создает временные файлы в локальной файловой системе и получает доступ к ним,
• QBuffer — считывает или записывает данные в QByteArray,
• QProcess — запускает внешние программы и обеспечивает связь между процессами,
• QTcpSocket — передает поток данных по сети, используя протокол TCP,
• QUdpSocket — передает и принимает из сети дейтаграммы UDP.
QProcess, QTcpSocket и QUdpSocket являются последовательными устройствами, т.е. они позволяют получить доступ к данным только один раз, начиная с первого байта и последовательно продвигаясь к последнему байту. QFile, QTemporaryFile и QBuffer являются устройствами произвольного доступа и позволяют считывать байты многократно из любой позиции; они используют функцию QIODevice::seek() для изменения положения указателя файла.
Кроме этих устройств Qt предоставляет два класса высокоуровневых потоков данных, которые можно использовать для чтения и записи на любое устройство ввода—вывода: QDataStream для двоичных данных и QTextStream для текста. Эти классы учитывают такие аспекты, как порядок байтов и кодировка текста, позволяя работающим на разных платформах и в разных странах приложениям Qt считывать и записывать файлы друг друга. Это делает классы Qt по вводу—выводу более удобными, чем соответствующие классы стандартного С++, при использовании которых решать подобные проблемы приходится прикладному программисту.
QFile позволяет легко получать доступ к отдельным файлам, независимо от того, располагаются они в файловой системе или оказываются внедренными в исполняемый модуль приложения как ресурсы. Для приложений, которым приходится работать с целыми наборами файлов, в Qt предусмотрены классы QDir и QFileInfo, которые позволяют работать с каталогами и получать сведения о файлах, расположенных внутри каталогов.
Класс QProcess позволяет нам запускать внешние программы и устанавливать связь с ними через стандартные каналы ввода, вывода и ошибок (cin, cout и cerr). Мы можем устанавливать переменные среды и рабочий каталог, которые будут использоваться внешним приложением. По умолчанию связь с процессом осуществляется в асинхронном режиме (без блокировок), но все же остается возможной блокировка определенных операций.
Работа с сетью, а также чтение и запись документов XML настолько важные темы, что будут рассмотрены отдельно в главах 14 и 15, специально им посвященным.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 4 Файлы и файловый ввод/вывод
Глава 4 Файлы и файловый ввод/вывод Данная глава описывает базовые файловые операции: открытие и создание файлов, чтение и запись в них, перемещение в них и их закрытие. По ходу дела она представляет стандартные механизмы для обнаружения ошибок и сообщений о них. Глава
4.4. Ввод и вывод
4.4. Ввод и вывод Все операции Linux по вводу/выводу осуществляются посредством дескрипторов файлов. Данный раздел знакомит с дескрипторами файлов, описывает, как их получать и освобождать, и объясняет, как выполнять с их помощью
ГЛАВА 14 Асинхронный ввод/вывод и порты завершения
ГЛАВА 14 Асинхронный ввод/вывод и порты завершения Операциям ввода и вывода присуща более медленная скорость выполнения по сравнению с другими видами обработки. Причиной такого замедления являются следующие факторы:• Задержки, обусловленные затратами времени на поиск
Ввод и вывод
Ввод и вывод Также мне кажется очень важным, чтобы мои результаты подпитывались соответствующим «вводом». Написание программного кода – творческая работа. Обычно мои творческие способности в наибольшей степени проявляются тогда, когда я сталкиваюсь с творческим
Глава 16 Неблокируемый ввод-вывод
Глава 16 Неблокируемый ввод-вывод 16.1. Введение По умолчанию сокеты блокируют выполнение процесса. Это означает, что, когда мы вызываем на сокете функцию, которая не может выполниться немедленно, наш процесс переходит в «спящее» состояние и ждет, когда будет выполнено
Глава 25 Управляемый сигналом ввод-вывод
Глава 25 Управляемый сигналом ввод-вывод 25.1. Введение Ввод-вывод, управляемый сигналом, подразумевает, что мы указываем ядру проинформировать нас сигналом, если что-либо произойдет с дескриптором. Исторически такой ввод-вывод назвали асинхронным вводом-выводом, но в
2.2.9. Перекрытый ввод-вывод
2.2.9. Перекрытый ввод-вывод Прежде чем переходить к рассмотрению перекрытого ввода-вывода, вспомним, какие модели ввода-вывода нам уже известны. Появление разных моделей связано с тем, что операции ввода-вывода не всегда могут быть выполнены немедленно.Самая простая
Глава 10. Ввод/вывод и хранение данных
Глава 10. Ввод/вывод и хранение данных На чистом диске можно искать бесконечно. Томас Б. Стил младший Вычислительные машины хороши для вычислений. В этой тавтологии больше смысла, чем кажется на первый взгляд. Если бы программа только потребляла процессорное время да
Ввод и вывод
Ввод и вывод Функции ввода и вывода в стандартной библиотеке Си позволяют читать данные из файлов или получать их с устройств ввода (например, с клавиатуры) и записывать данные в файлы, или выводить их на различные устройства (например, на принтер).Функции ввода/вывода
Ввод/вывод
Ввод/вывод Как вы знаете, операторы << и >> выполняют сдвиг числового значения влево и вправо на опеределенное число бит. В программах, приведенных в нашей книге, эти операторы также используются для ввода информации с клавиатуры и вывода на экран.Если с левой стороны
Глава 6 Ввод и вывод
Глава 6 Ввод и вывод В этой главе мы рассмотрим некоторые встроенные средства для записи данных в файл и считывания их из файла. Такие средства можно также применять и для форматирования объектов данных программы, чтобы получить желаемую форму их внешнего представления.
Ввод и вывод
Ввод и вывод Два класса библиотеки KERNEL обеспечивают основные средства ввода и вывода: FILE и STD_FILES.Среди операций, определенных для объекта f типа FILE, есть следующие:create f.make ("name") -- Связывает f с файлом по имени name.f.open_write -- Открытие f для записиf.open_read -- Открытие f для