跳到正文
Yayin Story Studio Yayin Story Studio 项目文档

Visindigo::Utility::FileUtility Class

class Visindigo::Utility::FileUtility

此类为Yayin Story Studio 提供文件操作的相关函数. 详情...

头文件: #include <FileUtility>
自以下版本: Visindigo 0.13.0

公开类型

(自 Visindigo 0.13.0 引入) enum BinarySizeFormat { IEC, SI }
(自 Visindigo 0.13.0 引入) enum BinarySizeUnit { bit, Byte, Char }
(自 Visindigo 0.13.0 引入) enum CountingUnit { _0, K, M, G, T, …, Y }

静态公开成员

(自 Visindigo 0.16.0 引入) void copyDir(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)
(自 Visindigo 0.13.0 引入) void copyFile(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)
(自 Visindigo 0.13.0 引入) bool createDir(const QString &dirPath)
(自 Visindigo 0.16.0 引入) void deleteDir(const QString &dirPath, const QStringList &exclude)
(自 Visindigo 0.13.0 引入) void deleteFile(const QString &filePath, bool moveToTrash = true)
(自 Visindigo 0.13.0 引入) QStringList fileFilter(const QString &root, const QStringList &exts, bool considerSubFolder = true)
(自 Visindigo 0.14.0 引入) QStringList folderFilter(const QString &root, bool considerSubFolder = false)
(自 Visindigo 0.13.0 引入) QDateTime getFileAccessTime(const QString &filePath)
(自 Visindigo 0.13.0 引入) QDateTime getFileCreateTime(const QString &filePath)
(自 Visindigo 0.17.0 引入) QString getFileMD5(const QString &filePath)
(自 Visindigo 0.13.0 引入) QDateTime getFileModifyTime(const QString &filePath)
(自 Visindigo 0.13.0 引入) QString getProgramPath(char **argv = nullptr)
(自 Visindigo 0.13.0 引入) QString getRelativeIfStartWith(const QString &startWith, const QString &path)
(自 Visindigo 0.13.0 引入) bool isDirEmpty(const QString &dirPath)
(自 Visindigo 0.13.0 引入) bool isDirExist(const QString &dirPath)
(自 Visindigo 0.13.0 引入) bool isFileExist(const QString &filePath)
(自 Visindigo 0.17.0 引入) bool isPathInDir(const QString &path, const QString &dir)
(自 Visindigo 0.16.0 引入) void moveDir(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)
(自 Visindigo 0.16.0 引入) void moveFile(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)
(自 Visindigo 0.16.0 引入) QString moveToTrash(const QString &path)
(自 Visindigo 0.13.0 引入) void openBrowser(const QString &url)
(自 Visindigo 0.13.0 引入) void openExplorer(const QString &path)
(自 Visindigo 0.13.0 引入) QString readAll(const QString &filePath)
(自 Visindigo 0.13.0 引入) QByteArray readByteArray(const QString &filePath)
(自 Visindigo 0.13.0 引入) QStringList readLines(const QString &filePath)
(自 Visindigo 0.13.0 引入) QString readableSize(qint64 bytes, Visindigo::Utility::FileUtility::BinarySizeUnit u = Byte, Visindigo::Utility::FileUtility::BinarySizeFormat f = IEC)
(自 Visindigo 0.13.0 引入) void saveAll(const QString &filePath, const QString &data)
(自 Visindigo 0.13.0 引入) void saveByteArray(const QString &filePath, const QByteArray &data)
(自 Visindigo 0.13.0 引入) void saveLines(const QString &filePath, const QStringList &lines, const QString &joinLine = "\n")
(自 Visindigo 0.13.0 引入) qint64 sizeBytes(const QString &root)
(自 Visindigo 0.13.0 引入) QString toLegalFileName(const QString &name, const QString &replace = "_")

详细说明

这类所有函数都是静态函数,所以你不需要创建它的实例。

总的来说,这里都是一些仅通过QDirQFileQFileInfo等文件系统相关类 实现的函数。

Warning: 自0.17.0起,本类中涉及到实际读写、复制、移动和删除的函数已经废弃, 它们只是转发到 Visindigo::Utility::FileOperation 中对应的实现上。 FileOperation 通过 ErrorCode 报告错误,请优先使用新函数。

成员类型文档

[since Visindigo 0.13.0] enum FileUtility::BinarySizeFormat

此枚举用于表示文件大小的单位

ConstantValueDescription
Visindigo::Utility::FileUtility::IEC1024二进制单位
Visindigo::Utility::FileUtility::SI1000十进制单位

以IEC为单位的文件大小单位是基于1024的,而以SI为单位的文件大小单位是基于1000的。 前者会产生KiB、MiB、GiB等单位,而后者会产生KB、MB、GB等单位。 请注意,虽然在日常使用中我们经常将KB、MB等单位误用来表示基于1024的单位, 但实际上它们应该是基于1000的单位,这是微软的黑锅。

这个enum 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] enum FileUtility::BinarySizeUnit

此枚举用于表示文件大小的单位

ConstantValueDescription
Visindigo::Utility::FileUtility::bit1
Visindigo::Utility::FileUtility::Byte8字节
Visindigo::Utility::FileUtility::CharByte字符,与Byte相同

这个enum 从 Visindigo 0.13.0 开始支持。

[since Visindigo 0.13.0] enum FileUtility::CountingUnit

此枚举用于表示文件大小的单位

ConstantValueDescription
Visindigo::Utility::FileUtility::_01(无单位)
Visindigo::Utility::FileUtility::K2
Visindigo::Utility::FileUtility::M3
Visindigo::Utility::FileUtility::G4
Visindigo::Utility::FileUtility::T5
Visindigo::Utility::FileUtility::P6
Visindigo::Utility::FileUtility::E7
Visindigo::Utility::FileUtility::Z8
Visindigo::Utility::FileUtility::Y9

这个enum 从 Visindigo 0.13.0 开始支持。

成员函数文档

[static, since Visindigo 0.16.0] void FileUtility::copyDir(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)

srcPath 源目录路径 dstPath 目标目录路径 rinse 是否使用漂洗的方式复制文件 overwrite 是否覆盖已存在的目标文件

复制整个目录。此函数会遍历源目录中的所有文件,并对每个文件调用copyFile()。

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::copyDir()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只在失败时记录日志。

这个function 从 Visindigo 0.16.0 开始支持。

[static, since Visindigo 0.13.0] void FileUtility::copyFile(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)

srcPath 源文件路径 dstPath 目标文件路径 rinse 是否使用漂洗的方式复制文件 overwrite 是否覆盖已存在的目标文件

复制文件,如果rinse为true,则使用漂洗的方式复制文件,否则使用QFile::copy(),如果overwrite为true,则覆盖已存在的目标文件,否则不进行复制。

漂洗模式只忠实传递文件本体的二进制数据,不从源文件读取任何元数据,也不写入任何元数据到目标文件, 因此在某些特殊情况下可能会得到一个与源文件不同的目标文件,例如当源文件具有特殊权限时,目标文件可能会得到默认权限; 当源文件具有特殊属性时,目标文件可能不会继承这些属性;当源文件具有特殊时间戳时,目标文件可能会得到当前时间戳。

这对于从qrc编译到二进制文件内的资源文件向外部复制时很有用,因为qrc资源文件会自动设为只读, 并且具有特殊的权限和属性,使用漂洗模式复制可以得到一个正常的可读写文件。

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::copyFile()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只在失败时记录日志。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] bool FileUtility::createDir(const QString &dirPath)

dirPath 目录路径

创建指定目录,

return 是否创建成功。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.16.0] void FileUtility::deleteDir(const QString &dirPath, const QStringList &exclude)

dirPath 目录路径 exclude 排除的文件或目录列表

直接删除指定目录及其所有内容。如果目录不存在,则不做任何操作。 由于Qt未提供统一的将整个文件夹挪动到回收站的接口,因此此函数不提供移动到回收站的选项。 对于dirPath中的文件或目录,如果它们在exclude列表中,则不会被删除。

Note: 此函数会递归删除目录中的所有文件和子目录,请谨慎使用。

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::deleteDir()。 不过新函数没有exclude参数,所以这个函数仍然保留自己的实现,并没有重定向到FileOperation

这个function 从 Visindigo 0.16.0 开始支持。

[static, since Visindigo 0.13.0] void FileUtility::deleteFile(const QString &filePath, bool moveToTrash = true)

filePath 文件路径 moveToTrash 是否移动到回收站

删除指定文件,如果moveToTrash为true,则移动到回收站,否则直接删除。

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::deleteFile()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只在失败时记录日志。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QStringList FileUtility::fileFilter(const QString &root, const QStringList &exts, bool considerSubFolder = true)

root 根目录 exts 文件扩展名,这exts应形如 "*.ext1"、"*.ext2"、"*.ext3",请务必注意星号。 considerSubFolder 是否考虑子目录

过滤指定目录下的文件。

return 一个QStringList,包含了所有符合条件的文件的绝对路径。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.14.0] QStringList FileUtility::folderFilter(const QString &root, bool considerSubFolder = false)

root 根目录 considerSubFolder 是否考虑子目录。请注意,这个函数的considerSubFolder默认为false,与fileFilter不同。

获取指定目录下的文件夹。

return 一个QStringList,包含了所有符合条件的文件夹的绝对路径。

这个function 从 Visindigo 0.14.0 开始支持。

[static, since Visindigo 0.13.0] QDateTime FileUtility::getFileAccessTime(const QString &filePath)

filePath 文件路径

return 指定文件的访问时间,返回一个QDateTime。如果文件不存在,则返回一个无效的QDateTime

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QDateTime FileUtility::getFileCreateTime(const QString &filePath)

filePath 文件路径

return 指定文件的创建时间,返回一个QDateTime。如果文件不存在,则返回一个无效的QDateTime

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.17.0] QString FileUtility::getFileMD5(const QString &filePath)

filePath 文件路径

return 指定文件的MD5值,如果文件不存在,则返回空字符串。

这个function 从 Visindigo 0.17.0 开始支持。

[static, since Visindigo 0.13.0] QDateTime FileUtility::getFileModifyTime(const QString &filePath)

filePath 文件路径

return 指定文件的修改时间,返回一个QDateTime。如果文件不存在,则返回一个无效的QDateTime

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QString FileUtility::getProgramPath(char **argv = nullptr)

argv 程序启动时输入main的参数

return 程序所在目录的绝对路径。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QString FileUtility::getRelativeIfStartWith(const QString &startWith, const QString &path)

startWith 起始路径 path 绝对路径

return 如果path以startWith开头,相对于startWith的路径,否则返回path。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] bool FileUtility::isDirEmpty(const QString &dirPath)

dirPath 目录路径

return 指定目录是否为空。如果目录不存在,则返回false。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] bool FileUtility::isDirExist(const QString &dirPath)

dirPath 目录路径

return 指定目录是否存在

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] bool FileUtility::isFileExist(const QString &filePath)

filePath 文件路径

return 指定文件是否存在

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.17.0] bool FileUtility::isPathInDir(const QString &path, const QString &dir)

path 文件或目录路径 dir 目录路径

return path是否在dir目录下(包括子目录)。如果path或dir不存在,则返回false。

这个function 从 Visindigo 0.17.0 开始支持。

[static, since Visindigo 0.16.0] void FileUtility::moveDir(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)

srcPath 源目录路径 dstPath 目标目录路径 rinse 是否使用漂洗的方式移动文件 overwrite 是否覆盖已存在的目标文件

移动整个目录。此函数会遍历源目录中的所有文件,并对每个文件调用moveFile()。 移动完成后会删除空的源目录结构。

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::moveDir()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只在失败时记录日志。

这个function 从 Visindigo 0.16.0 开始支持。

[static, since Visindigo 0.16.0] void FileUtility::moveFile(const QString &srcPath, const QString &dstPath, bool rinse = true, bool overwrite = false)

srcPath 源文件路径 dstPath 目标文件路径 rinse 是否使用漂洗的方式移动文件 overwrite 是否覆盖已存在的目标文件

移动文件。如果overwrite为true,则覆盖已存在的目标文件,否则不进行移动。

当rinse为false时,使用QFile::rename()直接重命名移动;当rinse为true时, 先漂洗复制再删除源文件,适用于跨卷移动或需要剥离元数据的场景。

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::moveFile()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只在失败时记录日志。

这个function 从 Visindigo 0.16.0 开始支持。

[static, since Visindigo 0.16.0] QString FileUtility::moveToTrash(const QString &path)

path 文件或目录路径

将指定的文件或目录移动到回收站。如果路径不存在,则不做任何操作。 这个函数实质上是调用了QFile::moveToTrash(),因此在不同平台上可能有不同的行为。

如果可以,返回值会是移动到回收站后的新路径,否则返回空字符串。

这个function 从 Visindigo 0.16.0 开始支持。

[static, since Visindigo 0.13.0] void FileUtility::openBrowser(const QString &url)

url 链接

打开指定链接的浏览器。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] void FileUtility::openExplorer(const QString &path)

path 路径

打开指定路径的资源管理器。 从0.15.0开始,这个函数在Windows上进行优化:如果路径是一个文件,则会额外选中该文件。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QString FileUtility::readAll(const QString &filePath)

filePath 文件路径

读取文件的所有内容。如果文件不存在或无法打开,则返回一个空字符串。 return 包含所有文本内容的QString

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::readAll()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只把错误记录到日志并返回空值。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QByteArray FileUtility::readByteArray(const QString &filePath)

filePath 文件路径

读取文件的所有内容。如果文件不存在或无法打开,则返回一个空QByteArray。 return 包含所有内容的QByteArray

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::readBinary()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只把错误记录到日志并返回空值。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QStringList FileUtility::readLines(const QString &filePath)

filePath 文件路径

return 以行列表的形式读取文件的内容。如果文件不存在或无法打开,则返回一个空列表。

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::readLines()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只把错误记录到日志并返回空值。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QString FileUtility::readableSize(qint64 bytes, Visindigo::Utility::FileUtility::BinarySizeUnit u = Byte, Visindigo::Utility::FileUtility::BinarySizeFormat f = IEC)

bytes 字节数 u 单位 f 格式

获取指定字节数的可读大小, return 一个QString,包含了可读大小和单位,例如"1.23MB"。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] void FileUtility::saveAll(const QString &filePath, const QString &data)

filePath 文件路径 data 需要保存的数据

QString保存到文件中

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::saveAll()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只把错误记录到日志。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] void FileUtility::saveByteArray(const QString &filePath, const QByteArray &data)

filePath 文件路径 data 需要保存的数据

QByteArray保存到文件中

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::saveBinary()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只把错误记录到日志。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] void FileUtility::saveLines(const QString &filePath, const QStringList &lines, const QString &joinLine = "\n")

filePath 文件路径 lines 需要保存的行列表 joinLine 行连接符

QStringList保存到文件中

Warning: 自0.17.0起,此函数已废弃,改用 Visindigo::Utility::FileOperation::saveLines()。 新函数通过返回值报告错误,而这个函数为了兼容旧行为,只把错误记录到日志。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] qint64 FileUtility::sizeBytes(const QString &root)

root 根目录

return 指定目录下的文件大小,单位为字节。如果目录不存在,则返回0。

这个function 从 Visindigo 0.13.0 开始支持。

[static, since Visindigo 0.13.0] QString FileUtility::toLegalFileName(const QString &name, const QString &replace = "_")

name 文件名 replace 替换字符

将文件名中的非法字符替换为指定字符 return 返回合法的文件名。

这个函数不验证用于替换的字符是否合法,请务必保证它合法,否则可能会得到一个仍然非法的文件名。

从0.17.0开始,此函数统一按最严格的规则(Windows)过滤字符, 以保证产出在任何平台(Windows/Linux/macOS)上都是合法文件名; 同时额外处理了Windows的保留设备名(CON/PRN/AUX/NUL/COM1-9/LPT1-9) 以及不允许以空格或点结尾的规则。

Note: 0.17.0之前,此函数错误地命名为toLegelFileName。

这个function 从 Visindigo 0.13.0 开始支持。