YSTest: platform::FileDescriptor类 参考

YSTest PreAlpha_b700_20160611 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

类 | Public 成员函数 | Public 属性 | Private 属性 | 所有成员列表
platform::FileDescriptor类 参考

文件描述符包装类。 更多...

`#include <FileIO.h>`

类 platform::FileDescriptor 继承关系图:
[图例]
platform::FileDescriptor 的协作图:
[图例]

## 类

struct | Deleter
| 删除器。 更多...

## Public 成员函数

yconstfn | DefDeCtor (FileDescriptor) yconstfn FileDescriptor(int fd) ynothrow
yconstfn | FileDescriptor (nullptr_t) ynothrow
| FileDescriptor (std::FILE *) ynothrow
| 构造：使用标准流。 更多...
| PDefHOp (int,*,) const ynothrow ImplRet(desc) PDefHOp(FileDescriptor *
ynothrow | ImplRet (this) PDefHOp(const FileDescriptor *
ynothrow const ynothrow | ImplRet (this) explicit DefCvt(const ynothrow
NodeCategory | GetCategory () const ynothrow
| 取节点类别。 更多...
FileTime | GetModificationTime () const
| 取修改时间。 更多...
array< FileTime, 2 > | GetModificationAndAccessTime () const
| 取修改和访问时间。 更多...
std::uint64_t | GetSize () const
| 取大小。 更多...
void | SetAccessTime (FileTime) const
| 设置访问时间。 更多...
int | GetFlags () const ynothrow
| 取旗标。 更多...
mode_t | GetMode () const ynothrow
| 取模式。 更多...
FileNodeID | GetNodeID () const ynothrow
| 取文件系统节点标识。 更多...
size_t | GetNumberOfLinks () const ynothrow
| 取链接数。 更多...
bool | SetBlocking () const ynothrow
| 设置阻塞模式。 更多...
bool | SetFlags (int) const ynothrow
| 设置旗标。 更多...
bool | SetMode (mode_t) const ynothrow
| 设置访问模式。 更多...
void | SetModificationTime (FileTime) const
| 设置修改时间。 更多...
void | SetModificationAndAccessTime (array< FileTime, 2 >) const
| 设置修改和访问时间。 更多...
bool | SetNonblocking () const ynothrow
| 设置非阻塞模式。 更多...
| YB_NONNULL (2) size_t Read(void *
| 读写文件。 更多...
| YB_NONNULL (2) size_t Write(const void *

## Public 属性

ynothrow const ynothrow | bool
ynothrow const ynothrow | desc

## Private 属性

int | desc = -1
size_t | ynothrowv
bool | SetSize (size_t) ynothrow
| 调整文件至指定长度。 更多...
int | SetTranslationMode (int) const ynothrow
| 设置翻译模式。 更多...
| YB_NONNULL (2) size_t FullRead(void *
| 循环读写文件。 更多...
| YB_NONNULL (2) size_t FullWrite(const void *
static | FileDescriptor
static byte | size_t
static | YB_NONNULL (3) void WriteContent(FileDescriptor
| 第二参数内容写入第一参数指定的文件。 更多...
static void | WriteContent (FileDescriptor, FileDescriptor, size_t=yimpl(size_t(BUFSIZ<< 4)))

## 详细描述

文件描述符包装类。

注解
  除非另行约定，具有无异常抛出保证的操作失败时可能设置 errno 。
  不支持的平台操作失败设置 errno 为 ENOSYS 。
  除非另行约定，无异常抛出的操作使用值初始化的返回类型表示失败结果。
  以 `int` 为返回值的操作返回 `-1` 表示失败。
  满足 NullablePointer 要求。

参见
  WG21 N4140 17.6.3.3[nullablepointer.requirements] 。

自从
  build 565

在文件 FileIO.h 第 171 行定义.

## 构造及析构函数说明

yconstfn platform::FileDescriptor::FileDescriptor | ( | nullptr_t |  | ) |

inline

自从
  build 644

在文件 FileIO.h 第 199 行定义.

platform::FileDescriptor::FileDescriptor | ( | std::FILE * |  | ) |

构造：使用标准流。

注解
  对空参数不设置 errno 。

当参数为空时得到无效文件空描述符，否则调用 POSIX `fileno` 函数。

## 成员函数说明

yconstfn platform::FileDescriptor::DefDeCtor | ( | FileDescriptor |  | ) |

inline

在文件 FileIO.h 第 192 行定义.

NodeCategory platform::FileDescriptor::GetCategory | ( |  | ) | const

取节点类别。

返回
  失败时为 NodeCategory::Invalid ，否则为对应类别。

自从
  build 638

在文件 FileIO.cpp 第 429 行定义.

参考 platform::CategorizeNode(), platform::estat() , 以及 platform_ex::Windows::Invalid.

函数调用图:

int platform::FileDescriptor::GetFlags | ( |  | ) | const

取旗标。

自从
  build 637

注解
  非 POSIX 平台：不支持操作。

在文件 FileIO.cpp 第 443 行定义.

mode_t platform::FileDescriptor::GetMode | ( |  | ) | const

取模式。

在文件 FileIO.cpp 第 453 行定义.

参考 platform::estat().

函数调用图:

array< FileTime, 2 > platform::FileDescriptor::GetModificationAndAccessTime | ( |  | ) | const

取修改和访问时间。

在文件 FileIO.cpp 第 465 行定义.

FileTime platform::FileDescriptor::GetModificationTime | ( |  | ) | const

取修改时间。

在文件 FileIO.cpp 第 460 行定义.

FileNodeID platform::FileDescriptor::GetNodeID | ( |  | ) | const

取文件系统节点标识。

注解
  若存储分配失败，设置 errno 为 `ENOMEM` 。

自从
  build 638

在文件 FileIO.cpp 第 470 行定义.

参考 platform::estat(), platform_ex::Windows::QueryFileNodeID() , 以及 YCL_Impl_RetTryCatchAll.

函数调用图:

size_t platform::FileDescriptor::GetNumberOfLinks | ( |  | ) | const

取链接数。

在文件 FileIO.cpp 第 483 行定义.

参考 platform::estat(), platform_ex::Windows::QueryFileLinks(), CHRLib::size_t() , 以及 YCL_Impl_RetTryCatchAll.

函数调用图:

std::uint64_t platform::FileDescriptor::GetSize | ( |  | ) | const

取大小。

返回
  以字节计算的文件大小。

注解
  非常规文件可能出错。

异常

  FileOperationFailure | 参数无效或文件大小查询失败。

在文件 FileIO.cpp 第 498 行定义.

参考 platform::estat() , 以及 YB_LIKELY.

函数调用图:

ynothrow platform::FileDescriptor::ImplRet | ( | this |  | ) | const

自从
  build 625

ynothrow const ynothrow platform::FileDescriptor::ImplRet | ( | this |  | ) | const

platform::FileDescriptor::PDefHOp | ( | int | ,
|  | * |
| ) |  | const

自从
  build 628
  build 625

void platform::FileDescriptor::SetAccessTime | ( | FileTime | ft | ) | const

设置访问时间。

异常

  FileOperationFailure | 设置失败。
  std::system_error | 本机 API 调用失败。

注解
  DS 平台：不支持操作。

自从
  build 651

在文件 FileIO.cpp 第 521 行定义.

参考 platform_ex::Windows::ConvertTime(), platform_ex::Windows::SetFileTime() , 以及 yimpl.

函数调用图:

bool platform::FileDescriptor::SetBlocking | ( |  | ) | const

设置阻塞模式。

注解
  非 POSIX 平台：不支持操作。

自从
  build 637

参见
  http://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html 。

自从
  build 625

在文件 FileIO.cpp 第 534 行定义.

bool platform::FileDescriptor::SetFlags | ( | int | flags | ) | const

设置旗标。

在文件 FileIO.cpp 第 549 行定义.

参考 yunused.

bool platform::FileDescriptor::SetMode | ( | mode_t | mode | ) | const

设置访问模式。

在文件 FileIO.cpp 第 561 行定义.

参考 yunused.

void platform::FileDescriptor::SetModificationAndAccessTime | ( | array< FileTime, 2 > | fts | ) | const

设置修改和访问时间。

在文件 FileIO.cpp 第 585 行定义.

参考 platform_ex::Windows::ConvertTime() , 以及 platform_ex::Windows::SetFileTime().

函数调用图:

void platform::FileDescriptor::SetModificationTime | ( | FileTime | ft | ) | const

设置修改时间。

异常

  FileOperationFailure | 设置失败。
  std::system_error | 本机 API 调用失败。

注解
  DS 平台：不支持操作。
  Win32 平台：要求打开的文件具有写权限。

自从
  build 651

在文件 FileIO.cpp 第 572 行定义.

参考 platform_ex::Windows::ConvertTime(), platform_ex::Windows::SetFileTime() , 以及 yimpl.

函数调用图:

bool platform::FileDescriptor::SetNonblocking | ( |  | ) | const

设置非阻塞模式。

注解
  非 POSIX 平台：不支持操作。

自从
  build 637

注解
  对不支持非阻塞的文件描述符， POSIX 未指定是否忽略 `O_NONBLOCK` 。

参见
  http://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html 。

自从
  build 624

在文件 FileIO.cpp 第 598 行定义.

bool platform::FileDescriptor::SetSize | ( | size_t | size | ) |

调整文件至指定长度。

自从
  build 625

前置条件
  指定文件需已经打开并可写。

注解
  不改变文件读写位置。

若文件不足指定长度，扩展并使用空字节填充；否则保留起始指定长度的字节。

在文件 FileIO.cpp 第 613 行定义.

参考 ystdex::size().

函数调用图:

int platform::FileDescriptor::SetTranslationMode | ( | int | mode | ) | const

设置翻译模式。

注解
  兼容 Win32 文本模式行为的平台：参数和返回值意义和语义同 `setmode` 函数。
  其它平台：无作用。

自从
  build 637

在文件 FileIO.cpp 第 625 行定义.

参考 yunused.

void platform::FileDescriptor::WriteContent | ( | FileDescriptor | ofd,
|  | FileDescriptor | ifd,
|  | size_t | size = `yimpl(size_t(BUFSIZ << 4))`
| ) |  |

static

注解
  最后一个参数指定缓冲区大小的上限，若分配失败自动重新分配。

异常

  std::bad_alloc | 缓冲区分配失败。

在文件 FileIO.cpp 第 680 行定义.

参考 ystdex::retry_on_cond(), CHRLib::size_t(), ystdex::to_string(), YAssert , 以及 YAssertNonnull.

参考自 YSLib::IO::CopyFile().

函数调用图:

这是这个函数的调用关系图:

platform::FileDescriptor::YB_NONNULL | ( | 2 |  | ) |

循环读写文件。

注解
  每次读写首先清除 errno ；读写时遇 EINTR 时继续。
  每次读 0 字节时设置 errno 为 0 。

参见
  Read

platform::FileDescriptor::YB_NONNULL | ( | 2 |  | ) | const

注解
  每次写 0 字节时设置 errno 为 ENOSPC 。

参见
  Write

platform::FileDescriptor::YB_NONNULL | ( | 2 |  | ) |

读写文件。

注解
  首先清除 errno 。
  Win64 平台：大小截断为 32 位。

返回
  若发生错误为 size_t(-1) ，否则为读取的字节数。

platform::FileDescriptor::YB_NONNULL | ( | 2 |  | ) | const

static platform::FileDescriptor::YB_NONNULL | ( | 3 |  | ) |

static

第二参数内容写入第一参数指定的文件。

前置条件
  最后参数指定的缓冲区大小不等于 0 。

异常

  FileOperationFailure | 文件读写失败。

自从
  build 634

前置条件
  参数指定的缓冲区非空且大小不等于 0 。

## 类成员变量说明

ynothrow const ynothrow platform::FileDescriptor::bool

在文件 FileIO.h 第 220 行定义.

int platform::FileDescriptor::desc = -1

private

自从
  build 554

在文件 FileIO.h 第 189 行定义.

ynothrow const ynothrow platform::FileDescriptor::desc

初始值:
= -1)
friend yconstfn YB_PURE PDefHOp(bool,
==, const FileDescriptor& x, const FileDescriptor& y) ynothrow
ImplRet(x.desc == y.desc)
friend yconstfn YB_PURE PDefHOp(bool,
<, const FileDescriptor& x, const FileDescriptor& y) ynothrow
ImplRet(x.desc < y.desc)
FileTime
GetAccessTime() const

在文件 FileIO.h 第 220 行定义.

platform::FileDescriptor::FileDescriptor

在文件 FileIO.h 第 414 行定义.

byte platform::FileDescriptor::size_t

在文件 FileIO.h 第 414 行定义.

size_t platform::FileDescriptor::ynothrowv

在文件 FileIO.h 第 379 行定义.

该类的文档由以下文件生成:

- FileIO.h
- FileIO.cpp