Как удалить файл в qt
Чтобы удалить файл, используйте QFile :: remove (filename); для ОК. Верните true, чтобы подтвердить, что удаление прошло успешно, верните false, чтобы удалить не удалось.
Если он доступен только для чтения, его нельзя удалить.
использовать bool QFile :: setPermissions (const QString &fileName, QFileDevice :: Permissions Орган власти) Функция для установки прав доступа к файлам.
Подробное объяснение прав доступа к файлам:
Это перечисление было введено или изменено в Qt 4.4.
Enum QFileDevice :: Permission
Логотип QFileDevice :: Permissions
постоянный | значение | описание |
---|---|---|
QFileDevice::ReadOwner | 0x4000 | Владелец файла может прочитать файл. |
QFileDevice::WriteOwner | 0x2000 | Файл может быть записан владельцем файла. |
QFileDevice::ExeOwner | 0x1000 | Файл может быть выполнен владельцем файла. |
QFileDevice::ReadUser | 0x0400 | Файл может быть прочитан пользователем. |
QFileDevice::WriteUser | 0x0200 | Файл может быть написан пользователем. |
QFileDevice::ExeUser | 0x0100 | Этот файл может быть выполнен пользователем. |
QFileDevice::ReadGroup | 0x0040 | Файл может быть прочитан группой. |
QFileDevice::WriteGroup | 0x0020 | Файл может быть записан группой. |
QFileDevice::ExeGroup | 0x0010 | Файл может быть выполнен группой. |
QFileDevice::ReadOther | 0x0004 | Кто угодно может прочитать файл. |
QFileDevice::WriteOther | 0x0002 | Этот файл может написать кто угодно. |
QFileDevice::ExeOther | 0x0001 | Файл может быть выполнен кем угодно. |
предостережение:Из-за того, что Qt поддерживает разные платформы, семантика ReadUser, WriteUser и ExeUser зависит от платформы: в Unix возвращаются разрешения владельца файла, а в Windows возвращаются разрешения текущего пользователя. В будущих версиях Qt это поведение может измениться.
QT операции с файлами (создание, копирование, запись, удаление)
В QT нам часто необходимо выполнять различные операции с файлами, такие как создание файлов, запись, копирование и удаление и т.д., все из которых используют класс QFile.
Класс QFile предоставляет интерфейс для чтения и записи файлов. В обычных условиях мы можем напрямую передать имя файла при вызове конструктора, что является более удобным методом. Или используйте QFile для создания объекта, а затем вызовите метод setFileName (), чтобы установить путь к файлу. Разделителем пути в имени файла должен быть '/', другие разделители не поддерживаются QFile.
QFile(const QString & name)
QFile(QObject * parent)
QFile(const QString & name, QObject * parent)
Общие функции QFile:
Название функции
Режим открытия файла:
Режим | Значение | Описание |
QIODevice::NotOpen | 0x0000 | Не открывать |
QIODevice::ReadOnly | 0x0001 | Режим только для чтения |
QIODevice::WriteOnly | 0x0002 | Режим только для записи, если файл не существует, файл будет создан автоматически |
QIODevice::ReadWrite | ReadOnly | WriteOnly | Методы чтения и письма |
QIODevice::Append | 0x0004 | Этот режим означает, что все данные записываются в конец файла. |
QIODevice::Truncate | 0x0008 | Перед открытием файла файл усекается, и все данные в исходном файле будут потеряны. |
QIODevice::Text | 0x0010 | При чтении флаг конца файла будет преобразован в «\ n»; при записи флаг конца файла будет преобразован в конец локальной кодировки, например в конец win32 ’\ r \ n’ |
QIODevice::UnBuffered | 0x0020 | Не кэшировать |
1. Создайте и откройте файл.
2. Определите, существует ли файл.
3. Скопируйте файлы.
4. Переименуйте файл.
5. Получить права пользователя на указанный файл, доступен ли он для чтения.
Обычно используемые статические функции:
QFileDialog :: getOpenFileName () // Получить указанный путь к файлу и вернуть QString
QFileDialog :: getExistingDirectory () // Получить указанный путь и вернуть QString
QFileDialog :: getSaveFileName () // Получить указанное имя пути сохранения и вернуть QString
Класс вспомогательного использования:
Класс QFileInfo получает информацию о файле;
Класс QFileInfo используется для чтения информации атрибутов файла
Примеры использования QFile:
QT делит файлы на текстовые файлы и файлы данных.Содержимое текстовых файлов - это читаемые текстовые символы, а содержимое файлов данных - двоичные данные.
QFile напрямую поддерживает работу с текстовыми файлами и файлами данных.Основные функциональные интерфейсы следующие:
qint64 read (char * data, qint64 maxSize) // чтение потока данных
QByteArray read (qint64 maxSize) // Чтение в режиме текстового потока
QByteArray readAll () // Чтение в режиме текстового потока
QByteArray readLine () // Чтение в режиме текстового потока
qint64 write(const char * data, qint64 maxSize)
qint64 write(const QByteArray & byteArray)
Чтобы упростить операции чтения и записи текстовых файлов и файлов данных, QT предоставляет вспомогательные классы для QTextStream и QDataStream.
QTextStream может преобразовывать все записанные данные в читаемый текст.
QDataStream может преобразовывать записанные данные в двоичные данные в соответствии с типом.
QTemporaryFile - это класс работы с временным файлом в QT, который используется для безопасного создания глобально уникального временного файла. Соответствующий временный файл будет удален при уничтожении объекта QTemporaryFile. Метод открытия временного файла - QIODevice: : ReadWrite, временные файлы часто используются для передачи больших объемов данных или межпроцессного взаимодействия.
1. QTextStream
2. QDataStream
Создать объект потока QDataStream date;
Сохраните данные в потоке date >> a >> b;
int a= xxxx;
string b = “xxxxxxxxx” ;
Удалить данные из потока date << aa << bb;
int aa;
string bb;
QDataStream может иметь разные форматы файлов потоков данных в разных версиях QT.Если файл потока данных необходимо передать между разными версиями программ QT, необходимо рассмотреть вопрос о версии.
void setVersion(int v)
int version() const
QTextStream Class
Чтобы управлять файлами в текстовом режиме:
Создать объект потока QDataStream date;
date.setCodec (); Поддержка настроек кодировки для чтения файлов (эффективно решает проблему искаженных кодов)
Если при записи двоичного кода вам нужно писать только в исходную память, не забудьте использовать функцию
int QDataStream::writeRawData(const char *s, int len)
вместо следующего, writeBytes ниже автоматически запишет дополнительную длину и другие данные
QDataStream &QDataStream::writeBytes(const char *s, uint len)
Пример использования QDataStream 1:
Прочитать
Пример использования QDataStream 2:
3. QBuffer
Класс QBuffer предоставляет интерфейс QIODevice для QByteArray.
В настоящее время это сначала понимается как создание файла кеша;
QT предопределяет класс буфера QBuffer, который можно рассматривать как специальное устройство ввода-вывода, а вспомогательный класс файлового потока можно напрямую использовать для управления буфером. Данные, записываемые и считываемые из буфера QBuffer, должны иметь один и тот же тип данных, и несколько типов данных нельзя смешивать.
Случаи использования QBuffer:
A. Различные типы передачи данных между потоками
Б. Кешируйте данные с внешних устройств для возврата
В. Скорость чтения данных ниже скорости записи.
Примеры использования QBuffer:
Резюме: основные методы операций чтения и записи: read (); readAll (); readline (), write ();
приложение:
Операции с каталогом
1. QDir QT предоставляет класс операций с каталогом QDir. Функции QDir следующие:
A. Единообразное использование разделителей каталогов ’/’
Б. Возможность выполнять произвольные операции с каталогом (создание, удаление, переименование)
В. Возможность получить все записи (файлы и папки) в указанном каталоге.
D, может использовать строку фильтра для получения указанного элемента
E. Возможность получить все корневые каталоги в системе
Как использовать QDir:
2、QFileSystemWatcher
QT предопределяет класс QFileSystemWatcher для отслеживания изменений файлов и каталогов,
Основные функции QFileSystemWatcher следующие:
А. Возможность отслеживать состояние определенных каталогов и файлов
Б. Возможность одновременного мониторинга нескольких файлов и каталогов
C. Запускать сигнал при изменении каталога или файла.
D. Улавливание сигналов и реагирование на них с помощью механизма сигналов и слотов.
Обычно для использования QFileSystemWatcher требуется специальный класс мониторинга файлов.
На этом уроке мы рассмотрим работу с файлами и каталогами в Qt5. Для этого мы будем использовать следующие классы:
QFile , QDir и QFileInfo — основные классы для работы с файлами в Qt5;
QFile — предоставляет интерфейс для чтения и записи информации в файлы;
QDir — обеспечивает доступ к структуре каталогов и к их содержимому;
QFileInfo — предоставляет информацию о файле, включая его имя и расположение в файловой системе, время доступа и изменения, имя владельца файла и текущие разрешения.
Размер файла
Для определения размера файла в классе QFileInfo предусмотрен метод size():
// Имя файла передается в качестве аргумента в нашу программу qWarning ( "The file does not exist" ) ; // если файл не найден, то выводим предупреждение и завершаем работу программы qint64 size = fileinfo . size ( ) ; // qint64 - это тип данных, который гарантированно будет 64-битным на всех платформах, поддерживаемых QtДля запуска программы проделайте следующие шаги:
ПОДГОТОВКА:
Шаг №1: Скомпилируйте вашу программу. Для этого выберите в меню "Сборка" > "Собрать всё" (или нажмите Ctrl+Shift+B ).
Шаг №2: Зайдите в папку, где лежит ваш Qt-проект (у меня он расположен в C:\dev\Qt_Project ).
Шаг №3: После выполнения первого шага у вас должна появиться еще одна папка, в которой будет создан исполняемый файл программы. Т.к. я использую компилятор MinGW 32-bit и режим компиляции Debug, то при компиляции проекта Qt автоматически создал папку build-My_QtApplication-Desktop_Qt_5_13_0_MinGW_32_bit-Debug .
Шаг №4: Зайдите в папку debug (она находится внутри папки, созданной на шаге №3).
Шаг №5: Найдите *.exe-файл вашей программы (у меня это file_size.exe ).
Шаг №6: Скопируйте этот файл в папку к соответствующему компилятору (напомню, т.к. я использовал компилятор MinGW 32-bit, то у меня этот путь выглядит следующим образом: C:\Soft\Qt\5.13.0\mingw73_32\bin ).
ЗАПУСК ПРОГРАММЫ:
Шаг №7: Откройте командную строку.
Шаг №8: Перейдите в папку, указанную в шаге №6 ( cd C:\Soft\Qt\5.13.0\mingw73_32\bin ).
Шаг №9: Запустите свою программу, передав ей в качестве параметра имя любого файла (у меня этим файлом оказалась эта же программа, поэтому в моем случае команда была следующей: file_size.exe file_size.exe ).
Результат выполнения программы:
Чтение содержимого файлов
Для того, чтобы прочитать содержимое файла, мы должны сначала открыть этот файл в режиме чтения, затем создать входящий файловый поток, из которого мы будем считывать данные. В примере, приведенном ниже, мы считываем данные из файла C:\colours.txt . Файл содержит названия семи цветов, вот его содержимое:
Red
Green
Black
Yellow
Purple
Blue
White
Читайте также: