Как удалить файл в qt

Обновлено: 07.07.2024

Чтобы удалить файл, используйте 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

Читайте также: