机械设备网站建设,福州阳楠科技网站建设有限公司,网站建设php,新手做网络营销如何开始1 函数
1.1 copy
bool QFile::copy(const QString newName) QFile::copy(const QString newName) 是 Qt 中用于复制文件的函数#xff0c;将 fileName() 所指向的文件复制到 newName 指定的新位置。
在复制文件之前#xff0c;源文件会先被关闭。如果被复制的文…1 函数
1.1 copy
bool QFile::copy(const QString newName) QFile::copy(const QString newName) 是 Qt 中用于复制文件的函数将 fileName() 所指向的文件复制到 newName 指定的新位置。
在复制文件之前源文件会先被关闭。如果被复制的文件是一个符号链接symlink那么它所引用的文件会被复制而不是链接本身。除了权限以外其他的文件元数据都不会被复制。
如果成功复制文件则返回 true否则返回 false。请注意如果 newName 已经存在一个同名文件则 copy() 函数将返回 false表示无法覆盖该文件不会执行复制操作。
必须指定完整的路径和文件名
1.2 exists
bool QFile::exists() QFile::exists() const 是 Qt 中用于检查文件是否存在的函数如果文件存在则返回 true否则返回 false。
该函数没有参数它使用 fileName() 方法获取当前 QFile 对象表示的文件路径并检查该文件是否存在。如果文件存在则返回 true否则返回 false。
bool QFile::exists(const QString fileName) 是一个静态函数用于检查指定文件名的文件是否存在如果文件存在则返回 true否则返回 false。
该函数的参数是一个 QString 对象表示要检查的文件名。函数将检查该文件名指定的文件是否存在如果文件存在则返回 true否则返回 false。
需要注意的是如果 fileName 是一个符号链接symlink并且指向一个不存在的文件那么该函数将返回 false。
1.3 link
bool QFile::link(const QString linkName) QFile::link(const QString linkName) 是 Qt 中用于创建链接link的函数。它会在文件系统中创建一个名为 linkName 的链接指向当前 QFile 对象表示的文件。链接的类型例如在 Windows 上是快捷方式或在 Unix 上是符号链接取决于底层文件系统。如果成功创建了链接则返回 true否则返回 false。
需要注意的是该函数不会覆盖文件系统中已经存在的任何实体。如果 linkName 已经存在则 link() 函数将返回 false并将 error() 设置为 QFile::RenameError表示无法创建链接。
另外需要注意的是在 Windows 上要创建有效的链接linkName 必须具有 .lnk 文件扩展名。 QString name E:/dd/QT/test/FileDemo/bin/;QFile file(1.txt);bool ok file.link(name1.lnk);if(ok){qDebug()true;}else{qDebug()false;}1.4 open
bool open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags DontCloseHandle)
QFile::open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags DontCloseHandle) 是 QFile 类中用于打开现有文件句柄的函数。它使用给定的文件句柄 fh 以指定的模式 mode 打开文件并使用 handleFlags 指定文件句柄标志。如果成功打开文件则返回 true否则返回 false。
需要注意的是如果文件打开成功并使用 QFile 对象进行操作那么 QFile::close() 函数的行为将受到 QFileDevice::AutoCloseHandle 标志的控制。如果 AutoCloseHandle 标志被指定而且这个函数成功执行那么调用 QFile::close() 将关闭被采用的文件句柄。否则QFile::close() 不会真正关闭文件只是将其刷新。
另外需要注意的是如果文件句柄 fh 指向的不是一个常规文件例如它是标准输入、标准输出或标准错误输出那么您可能无法使用 QFile 对象的 seek() 函数而且 size() 函数会返回0。有关更多信息请参见 QIODevice::isSequential()。
由于该函数打开文件时没有指定文件名因此不能使用该 QFile 对象与 QFileInfo 配合使用。
需要注意的是在 Windows 平台上必须以二进制模式打开文件句柄 fh即模式字符串必须包含 ‘b’例如 “rb” 或 “wb”才能访问文件和其他随机访问设备。如果向模式中传递 QIODevice::TextQt 将转换行尾字符。而对于顺序设备例如标准输入和标准输出不受此限制。
如果要在控制台应用程序中使用标准输入、标准输出和标准错误输出流则需要启用控制台应用程序支持。为此需要在应用程序的项目文件中添加以下声明
CONFIG console下面是一个使用 QFile::open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags DontCloseHandle) 函数打开现有文件句柄的示例代码
#include QFile
#include cstdioint main()
{FILE *fh std::fopen(my_file.txt, r);if (!fh) {return 1;}QFile file;if (file.open(fh, QIODevice::ReadOnly)) {// File opened successfully}return 0;
}bool open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags DontCloseHandle) QFile::open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags DontCloseHandle) 是 QFile 类中用于打开现有文件描述符的函数。它使用给定的文件描述符 fd 以指定的模式 mode 打开文件并使用 handleFlags 指定文件句柄标志。如果成功打开文件则返回 true否则返回 false。
需要注意的是如果文件打开成功并使用 QFile 对象进行操作那么 QFile::close() 函数的行为将受到 QFileDevice::AutoCloseHandle 标志的控制。如果 AutoCloseHandle 标志被指定而且这个函数成功执行那么调用 QFile::close() 将关闭被采用的文件句柄。否则QFile::close() 不会真正关闭文件只是将其刷新。
另外需要注意的是如果文件描述符 fd 指向的不是一个常规文件例如它是标准输入、标准输出或标准错误输出那么您可能无法使用 QFile 对象的 seek() 函数而且 size() 函数会返回0。有关更多信息请参见 QIODevice::isSequential()。
由于该函数打开文件时没有指定文件名因此不能使用该 QFile 对象与 QFileInfo 配合使用。
下面是一个使用 QFile::open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags DontCloseHandle) 函数打开现有文件描述符的示例代码
#include QFile
#include unistd.hint main()
{int fd ::open(my_file.txt, O_RDONLY);if (fd -1) {return 1;}QFile file;if (file.open(fd, QIODevice::ReadOnly)) {// File opened successfully}return 0;
}在此示例中我们使用标准 C 函数 ::open() 打开一个文件然后将文件描述符传递给 QFile::open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags DontCloseHandle) 函数来打开文件。
如果文件成功打开则程序将会执行相应的操作。需要注意的是在此示例中我们没有手动关闭文件因为 QFile 对象销毁时会自动关闭该文件。
bool QFile::open(QIODevice::OpenMode mode) QFile::open(QIODevice::OpenMode mode) 是 QFile 类中的函数用于打开文件并指定打开模式。如果打开文件成功返回 true否则返回 false。
打开模式必须为 QIODevice::ReadOnly、QIODevice::WriteOnly 或 QIODevice::ReadWrite并且可以具有其他标志例如 QIODevice::Text 和 QIODevice::Unbuffered。
需要注意的是在 WriteOnly 或 ReadWrite 模式下如果相关文件不存在此函数将在打开文件之前尝试创建一个新文件。
1.5 remove
bool QFile::remove() QFile::remove() 是 QFile 类中的函数用于删除指定的文件。如果成功删除文件则返回 true否则返回 false。
需要注意的是删除文件前会自动关闭该文件。
bool QFile::remove(const QString fileName) 静态函数 QFile::remove(const QString fileName) 是 QFile 类中的函数的重载版本用于删除指定的文件。如果成功删除文件则返回 true否则返回 false。 需要注意的是删除文件前会自动关闭该文件。
1.6 rename
bool QFile::rename(const QString newName) QFile::rename(const QString newName) 是 QFile 类中的函数用于将当前指定的文件重命名为 newName。如果成功重命名文件则返回 true否则返回 false。 需要注意的是如果已存在名为 newName 的文件则 rename() 函数将返回 false并不会覆盖原有文件。 重命名文件前会自动关闭该文件。 如果重命名操作失败Qt 将尝试将该文件的内容复制到 newName然后删除该文件仅保留 newName。如果复制操作失败或者无法删除该文件则将删除目标文件 newName以恢复旧状态。
bool QFile::rename(const QString oldName, const QString newName) 静态函数 QFile::rename(const QString oldName, const QString newName) 是 QFile 类中的另一个函数用于将旧文件名 oldName 重命名为新文件名 newName。如果成功重命名文件则返回 true否则返回 false。
需要注意的是如果已存在名为 newName 的文件则 rename() 函数将返回 false并不会覆盖原有文件。
1.7 setFileName
void QFile::setFileName(const QString name) QFile::setFileName(const QString name) 是 QFile 类中的函数用于设置文件的名称。文件名可以没有路径、有相对路径或绝对路径。
请注意如果文件已经被打开请不要调用此函数。
如果文件名没有路径或有相对路径则 open() 调用时所在的应用程序的当前目录路径将被使用。
file.setFileName(3.txt);
bool ok file.open(QIODevice::WriteOnly);if(ok)
{qDebug()true;file.write(hello\n,6);
}
else
{qDebug()false;
}
file.close();1.8 symLinkTarget
QString QFile::symLinkTarget() const QFile::symLinkTarget() const 是 QFile 类中的函数用于返回符号链接所指向的文件或目录的绝对路径如果对象不是符号链接则返回一个空字符串。
需要注意的是返回的文件名字符串可能并不代表一个实际存在的文件它只是一个字符串。如果符号链接指向一个实际存在的文件则 QFile::exists() 函数将返回 true。
2 虚函数
virtual QString fileName() const override 用于返回当前文件的路径和名称。
virtual bool open(QIODevice::OpenMode mode) override 见1.4
virtual QFileDevice::Permissions permissions() const override 用于返回当前文件的权限。 返回值是 QFileDevice::Permissions 类型其中包含一些标志表示文件的不同权限例如可读、可写、可执行等。 以下是 QFileDevice::Permissions 中定义的枚举值
QFileDevice::ReadOwner: 文件所有者可读取。 QFileDevice::WriteOwner: 文件所有者可写入。 QFileDevice::ExeOwner: 文件所有者可执行。 QFileDevice::ReadUser: 文件用户可读取。 QFileDevice::WriteUser: 文件用户可写入。 QFileDevice::ExeUser: 文件用户可执行。 QFileDevice::ReadGroup: 文件组可读取。 QFileDevice::WriteGroup: 文件组可写入。 QFileDevice::ExeGroup: 文件组可执行。 QFileDevice::ReadOther: 其他用户可读取。 QFileDevice::WriteOther: 其他用户可写入。 QFileDevice::ExeOther: 其他用户可执行。 可以使用按位或运算符将多个值组合在一起
virtual bool resize(qint64 sz) override 使用前需要先open文件 类中的函数用于改变文件的大小使其变为指定的大小 sz 字节。 如果文件原本较小resize() 将会在文件末尾添加空字节以扩展文件大小。如果文件原本较大resize() 将截断文件并将其大小设置为指定的大小 sz 字节。
该函数返回一个 bool 类型的值指示函数是否成功执行。如果返回值为 true表示函数执行成功否则表示函数执行失败。
virtual bool setPermissions(QFileDevice::Permissions permissions) override 设置权限 virtual qint64 size() const override 返回文件大小
3 静态函数
bool copy(const QString fileName, const QString newName) 见1.1
QString decodeName(const QByteArray localFileName) QString decodeName(const char *localFileName) decodeName() 是 QFile 类的静态函数用于将本地文件名转换为字符串。在大多数情况下文件名都可以使用 UTF-8 编码。然而有些操作系统如 Windows使用本地编码来存储文件名。因此在读取这些文件时需要将本地编码转换为 Unicode 编码以便正确地显示文件名。 decodeName() 函数可以将本地编码的文件名转换为 Unicode 编码的字符串。该函数有两种重载形式 QString QFile::decodeName(const QByteArray localFileName)将 localFileName 转换为字符串。 QString QFile::decodeName(const char *localFileName)将 C 字符串 localFileName 转换为字符串。
QByteArray encodeName(const QString fileName) encodeName() 是 QFile 类的静态函数用于将字符串转换为本地编码的文件名。在大多数情况下文件名都可以使用 UTF-8 编码。然而有些操作系统如 Windows使用本地编码来存储文件名。因此在写入这些文件时需要将 Unicode 编码的文件名转换为本地编码以便正确地写入文件。
encodeName() 函数可以将 Unicode 编码的文件名转换为本地编码的字节数组。该函数有一个形式如下的重载QByteArray QFile::encodeName(const QString fileName)将 fileName 转换为本地编码的字节数组。
bool exists(const QString fileName) 见1.2
bool link(const QString fileName, const QString linkName) 见1.3
QFileDevice::Permissions permissions(const QString fileName) 见2.3
bool remove(const QString fileName) 见1.5
bool rename(const QString oldName, const QString newName) 见1.6
bool resize(const QString fileName, qint64 sz) 见2 bool setPermissions(const QString fileName, QFileDevice::Permissions permissions) 见2 QString symLinkTarget(const QString fileName) 见1.8