The QFileDevice class provides an interface for reading from and writing to open files. 更多...
| 头: | #include <QFileDevice> | 
| qmake: | QT += core | 
| Since: | Qt 5.0 | 
| 继承: | QIODevice | 
| 继承者: | QFile and QSaveFile | 
注意: 此类的所有函数 可重入 .
| enum | FileError { NoError, ReadError, WriteError, FatalError, ..., CopyError } | 
| enum | FileHandleFlag { AutoCloseHandle, DontCloseHandle } | 
| flags | FileHandleFlags | 
| enum | FileTime { FileAccessTime, FileBirthTime, FileMetadataChangeTime, FileModificationTime } | 
| enum | MemoryMapFlags { NoOptions, MapPrivateOption } | 
| enum | Permission { ReadOwner, WriteOwner, ExeOwner, ReadUser, ..., ExeOther } | 
| flags | Permissions | 
| virtual | ~QFileDevice () | 
| QFileDevice::FileError | error () const | 
| virtual QString | fileName () const | 
| QDateTime | fileTime (QFileDevice::FileTime time ) const | 
| bool | flush () | 
| int | handle () const | 
| uchar * | map (qint64 offset , qint64 size , QFileDevice::MemoryMapFlags flags = NoOptions) | 
| virtual QFileDevice::Permissions | permissions () const | 
| virtual bool | resize (qint64 sz ) | 
| bool | setFileTime (const QDateTime & newDate , QFileDevice::FileTime fileTime ) | 
| virtual bool | setPermissions (QFileDevice::Permissions permissions ) | 
| bool | unmap (uchar * address ) | 
| void | unsetError () | 
| virtual bool | atEnd () const override | 
| virtual void | close () override | 
| virtual bool | isSequential () const override | 
| virtual qint64 | pos () const override | 
| virtual bool | seek (qint64 pos ) override | 
| virtual qint64 | size () const override | 
| const QMetaObject | staticMetaObject | 
| virtual qint64 | readData (char * data , qint64 len ) override | 
| virtual qint64 | readLineData (char * data , qint64 maxlen ) override | 
| virtual qint64 | writeData (const char * data , qint64 len ) override | 
The QFileDevice class provides an interface for reading from and writing to open files.
QFileDevice is the base class for I/O devices that can read and write text and binary files and resources . QFile offers the main functionality, QFileDevice serves as a base class for sharing functionality with other file devices such as QTemporaryFile ,通过提供所有文件操作,打开通过 QFile or QTemporaryFile .
另请参阅 QFile and QTemporaryFile .
此枚举描述可能的错误,错误返回通过 error () 函数。
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QFileDevice::NoError
								 | 
0
								 | 没有出现错误。 | 
| 
QFileDevice::ReadError
								 | 
1
								 | 发生错误当读取文件时。 | 
| 
QFileDevice::WriteError
								 | 
2
								 | 出现错误,当写入文件时。 | 
| 
QFileDevice::FatalError
								 | 
3
								 | 出现致命错误。 | 
| 
QFileDevice::ResourceError
								 | 
4
								 | 资源不足 (如:打开的文件太多、内存不足、等) | 
| 
QFileDevice::OpenError
								 | 
5
								 | 文件无法打开。 | 
| 
QFileDevice::AbortError
								 | 
6
								 | 操作被中止。 | 
| 
QFileDevice::TimeOutError
								 | 
7
								 | 出现超时。 | 
| 
QFileDevice::UnspecifiedError
								 | 
8
								 | 出现未指定错误。 | 
| 
QFileDevice::RemoveError
								 | 
9
								 | 文件无法删除。 | 
| 
QFileDevice::RenameError
								 | 
10
								 | 文件无法重命名。 | 
| 
QFileDevice::PositionError
								 | 
11
								 | 文件位置无法改变。 | 
| 
QFileDevice::ResizeError
								 | 
12
								 | 文件无法重置尺寸。 | 
| 
QFileDevice::PermissionsError
								 | 
13
								 | 文件无法访问。 | 
| 
QFileDevice::CopyError
								 | 
14
								 | 文件无法拷贝。 | 
使用此枚举当打开文件时,以指定附加选项仅适用于文件而不适用于一般 QIODevice .
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QFileDevice::AutoCloseHandle
								 | 
0x0001
								 | 文件句柄被传入 open () 应关闭通过 close (),默认行为是 close 仅仅刷新文件,且应用程序负责关闭文件句柄。当按名称打开文件时,忽略此标志,因为 Qt 始终拥有文件句柄且必须关闭它。 | 
| 
QFileDevice::DontCloseHandle
								 | 
0
								 | 若未明确关闭,底层文件句柄保持打开,当 QFile 对象被销毁。 | 
FileHandleFlags 类型是 typedef 对于 QFlags <FileHandleFlag>。它存储 FileHandleFlag 值的 OR 组合。
此枚举用于 fileTime () 和 setFileTime () 函数。
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QFileDevice::FileAccessTime
								 | 
0
								 | 最近访问文件时 (如:读写)。 | 
| 
QFileDevice::FileBirthTime
								 | 
1
								 | 创建文件时 (Unix 可能不支持)。 | 
| 
QFileDevice::FileMetadataChangeTime
								 | 
2
								 | 最后改变文件元数据时。 | 
| 
QFileDevice::FileModificationTime
								 | 
3
								 | 最近修改文件时。 | 
该枚举在 Qt 5.10 引入或被修改。
另请参阅 setFileTime (), fileTime (),和 QFileInfo::fileTime ().
此枚举描述的特殊选项可以用于 map () 函数。
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QFileDevice::NoOptions
								 | 
0
								 | 没有选项。 | 
| 
QFileDevice::MapPrivateOption
								 | 
0x0001
								 | 映射内存将是私有的,所以,任何修改对其它进程是不可见的,且不会写入磁盘。任何这种修改都会丢失,当取消内存映射时。未指定是否对文件做出修改,在映射创建后,将透过映射内存可见。该枚举值在 Qt 5.4 引入。 | 
该枚举在 Qt 4.4 引入或被修改。
此枚举用于 permission() 函数,以报告文件的权限和所有权。可以把值 OR 在一起,以测试多权限和所有权值。
| 常量 | 值 | 描述 | 
|---|---|---|
| 
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
								 | The file is readable by anyone. | 
| 
QFileDevice::WriteOther
								 | 
0x0002
								 | The file is writable by anyone. | 
| 
QFileDevice::ExeOther
								 | 
0x0001
								 | The file is executable by anyone. | 
警告: 由于 Qt 支持的平台差异,ReadUser、WriteUser 及 ExeUser 的语义从属平台:Unix 返回文件所有者的权限,而 Windows 返回当前用户的权限。此行为在未来 Qt 版本中可能改变。
注意: 在 NTFS 文件系统,默认情况下,出于性能原因禁用所有权和权限校验。要启用它,包括以下行:
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
						然后打开和关闭权限校验,通过递增和递减
						
qt_ntfs_permission_lookup
						
						by 1.
					
qt_ntfs_permission_lookup++; // turn checking on qt_ntfs_permission_lookup--; // turn it off again
Permissions 类型是 typedef 对于 QFlags <Permission>。它存储 Permission 值的 OR 组合。
[虚拟]
						
						QFileDevice::
						
							~QFileDevice
						
						()
						
					销毁文件设备,关闭它若有必要。
[override virtual]
						
						
							bool
						
						QFileDevice::
						
							atEnd
						
						() const
						
					重实现自 QIODevice::atEnd ().
						返回
						
true
						
						若到达 EOF (文件末尾);否则返回 false。
					
						Unix 常规空文件 (如,那些在
						
/proc
						
						),此函数返回
						
true
						
						,由于文件系统把这种文件的大小报告为 0。因此,不应依赖 atEnd() 当读取这种文件数据时,而是调用
						
							read
						
						() 直到无法读取更多数据。
					
[override virtual]
						
						
							void
						
						QFileDevice::
						
							close
						
						()
						
					重实现自 QIODevice::close ().
调用 QFileDevice::flush () 并关闭文件。忽略 flush 错误。
另请参阅 QIODevice::close ().
返回文件错误状态。
						I/O 设备状态返回错误代码。例如,若
						
							open
						
						() 返回
						
false
						
						,或读/写操作返回 -1,可以调用此函数以找出操作为什么失败的原因。
					
另请参阅 unsetError ().
[虚拟]
						
						
							
								QString
							
						
						QFileDevice::
						
							fileName
						
						() const
						
					返回文件名。默认实现在 QFileDevice 返回 null 字符串。
返回文件时间指定通过 time 。若无法确定时间,返回 QDateTime() (无效日期时间)。
该函数在 Qt 5.10 引入。
另请参阅 setFileTime (), FileTime ,和 QDateTime::isValid ().
						将任何缓冲数据刷新到文件。返回
						
true
						
						若成功;否则返回
						
false
						
						.
					
返回文件的文件句柄。
						这是小正整数,适合用于 C 库函数,譬如
						
fdopen()
						
						and
						
fcntl()
						
						。在套接字使用文件描述符的系统 (即 Unix 系统,而非 Windows) 中,句柄可以用于
						
							QSocketNotifier
						
						还。
					
若文件未被打开,或存在错误,handle() 返回 -1。
另请参阅 QSocketNotifier .
[override virtual]
						
						
							bool
						
						QFileDevice::
						
							isSequential
						
						() const
						
					重实现自 QIODevice::isSequential ().
						返回
						
true
						
						若只能按顺序操纵文件;否则返回
						
false
						
						.
					
大多数文件支持随机访问,但某些特殊文件不可以。
另请参阅 QIODevice::isSequential ().
映射 size 字节的文件到内存起始于 offset 。要成功映射,应打开文件。但文件不需要保持打开,在映射内存后。当 QFile 被销毁 (或采用此对象打开新文件),任何尚未取消映射的映射都将自动取消映射。
映射将拥有如文件的相同打开方式 (读和/或写),除非使用 MapPrivateOption ,在这种情况下,写入到映射内存始终是可能的。
可以传递任何映射选项透过 flags .
Returns a pointer to the memory or 0 if there is an error.
另请参阅 unmap ().
[虚拟]
						
						
							
								QFileDevice::Permissions
							
						
						QFileDevice::
						
							permissions
						
						() const
						
					Returns the complete OR-ed together combination of QFile::Permission for the file.
另请参阅 setPermissions ().
[override virtual]
						
						
							
								qint64
							
						
						QFileDevice::
						
							pos
						
						() const
						
					重实现自 QIODevice::pos ().
[override virtual protected]
						
						
							
								qint64
							
						
						QFileDevice::
						
							readData
						
						(
						
							char
						
						*
						
							data
						
						,
						
							
								qint64
							
						
						
							len
						
						)
						
					重实现自 QIODevice::readData ().
[override virtual protected]
						
						
							
								qint64
							
						
						QFileDevice::
						
							readLineData
						
						(
						
							char
						
						*
						
							data
						
						,
						
							
								qint64
							
						
						
							maxlen
						
						)
						
					重实现自 QIODevice::readLineData ().
[虚拟]
						
						
							bool
						
						QFileDevice::
						
							resize
						
						(
						
							
								qint64
							
						
						
							sz
						
						)
						
					
						设置文件大小 (以字节为单位)
						
							sz
						
						。返回
						
true
						
						若重置大小成功;否则 false。若
						
							sz
						
						> 文件目前大小,将新字节数设为 0;若
						
							sz
						
						更小,只需截取文件。
					
警告: 此函数可能失败,若文件不存在。
另请参阅 size ().
[override virtual]
						
						
							bool
						
						QFileDevice::
						
							seek
						
						(
						
							
								qint64
							
						
						
							pos
						
						)
						
					重实现自 QIODevice::seek ().
对于随机访问设备,此函数将当前位置设为 pos ,返回 true 当成功时,或 false 若出现错误。对于顺序设备,默认行为是什么都不做并返回 false。
寻址超出 EOF (文件末尾):若位置超出文件末尾,seek() 不会立即延伸文件。若在此位置履行写入,那么文件将延伸。在文件上一结尾和新近写入数据之间的文件内容 UNDEFINED (未定义),且因平台和文件系统不同而异。
设置文件时间指定通过 fileTime to newDate ,返回 true 若成功;否则返回 false。
注意: 必须打开文件,才能使用此函数。
该函数在 Qt 5.10 引入。
[虚拟]
						
						
							bool
						
						QFileDevice::
						
							setPermissions
						
						(
						
							
								QFileDevice::Permissions
							
						
						
							permissions
						
						)
						
					
						将文件权限设为
						
							permissions
						
						指定。返回
						
true
						
						若成功,或
						
false
						
						若权限不能被修改。
					
警告: 此函数不操纵 ACL (访问控制列表),这可能限制其有效性。
另请参阅 permissions ().
[override virtual]
						
						
							
								qint64
							
						
						QFileDevice::
						
							size
						
						() const
						
					重实现自 QIODevice::size ().
返回文件大小。
						Unix 常规空文件 (如,那些在
						
/proc
						
						),此函数返回 0;这种文件的内容是按需生成的,为响应调用
						
							read
						
						().
					
取消映射内存 address .
						返回
						
true
						
						若取消映射成功;否则 false。
					
另请参阅 map ().
把文件的错误设为 QFileDevice::NoError .
另请参阅 error ().
[override virtual protected]
						
						
							
								qint64
							
						
						QFileDevice::
						
							writeData
						
						(const
						
							char
						
						*
						
							data
						
						,
						
							
								qint64
							
						
						
							len
						
						)
						
					重实现自 QIODevice::writeData ().