Класс QFileInfo. Информация о файлах

   
На этом шаге рассмотрим возможность просмотра информации о файле с помощью класса QFileInfo.

   
Иногда необходимо убедиться, что исследуемый объект является каталогом, а не файлом, и наоборот. Для этой цели существуют методы isFile() и isDir().

   
Если объект является файлом, метод isFile() возвращает значение true, иначе — false. Если объект является каталогом, то метод isDir() возвращает значение true, иначе — false.

   
Кроме этих методов, класс QFileInfo содержит метод isSymLink(), возвращающий значение true, если объект является символьной ссылкой (термин "symbolic link" применяется в UNIX, в ОС Windows принято название ярлык (shortcut)).

   
Путь и имя файла

   
Чтобы получить абсолютный путь к файлу, нужно воспользоваться методом absoluteFilePath(), а для получения относительного пути следует использовать метод filePath(). Для получения имени файла нужно вызвать метод fileName(), который возвращает имя файла вместе с его расширением. Если нужно только имя файла, то следует вызвать метод baseName(). Для получения расширения используется метод completeSuffix().

   
Информация о дате и времени

   
Иногда нужно узнать время создания файла, время его последнего изменения или чтения. Для этого класс QFileInfo предоставляет методы created(), lastModified() и lastRead() соответственно. Эти методы возвращают объекты класса QDateTime, которые можно преобразовать в строку методом toString(). Например:

// Дата и время создания файла
fileInfo.created().toString();
// Дата и время последнего изменения файла
fileInfo.lastModified().toString();
// Дата и время последнего чтения файла
fileInfo.lastRead().toString();

   
Получение атрибутов файла

   
Атрибуты файла дают информацию о том, какие операции можно проводить с файлом. Для их получения в классе QFileInfo существуют следующие методы:

  • isReadable() — возвращает значение true, если из указанного файла можно читать информацию;
  • isWriteable() — возвращает значение true, если в указанный файл можно записывать информацию;
  • isHidden() — возвращает значение true, если указанный файл является скрытым;
  • isExecutable() — возвращает значение true, если указанный файл можно исполнять. В ОС UNIX это определяется не на основании расширения файла, как принято в DOS и ОС Windows, а из свойств самого файла.

   
Определение размера файла

   
Метод size() класса QFileInfo возвращает размер файла в байтах. Размер файлов редко отображается в байтах, чаще используются специальные буквенные обозначения, сообщающие об его размере. Например, для килобайта — это буква K, для мегабайта — M, для гигабайта — G, а для терабайта — T. Следующая функция позволяет сопровождать буквенными обозначениями размеры, лежащие даже в терабайтном диапазоне:

QString fileSize(qint64 nSize)
{
int i = 0;
for (; nSize > 1023; nSize /= 1024, ++i) {
if(i >= 4) {
break;
}
}
return QString().setNum(nSize) + "BKMGT"[i];
}

   
Наблюдение за файлами и каталогами

   
Поскольку файлы и каталоги используются не только вашей программой, бывает очень полезно получать уведомления в случае их изменений. Например, вы написали файловый браузер и показываете содержимое текущего каталога. Но пользователь может воспользоваться другими программами и скопировать новые файлы в этот каталог, после чего ото-ражаемая информация перестанет отвечать действительности. Не имея специального механизма слежения за изменением текущего каталога, вы не сможете узнать о необходимости обновить его содержимое.

   
На следующем шаге рассмотрим класс QFileSystemWatcher.

Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий