#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.1mscorlib.dll
#endregion
using System.Runtime.InteropServices;
using System.Security;
using System.Security.AccessControl;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Win32.SafeHandles;
namespace System.IO
{
//
// 摘要:
// 为文件提供 System.IO.Stream,既支持同步读写操作,也支持异步读写操作。 若要浏览此类型的.NET Framework 源代码,请参阅 Reference
// Source。
[ComVisible(true)]
public class FileStream : Stream
{
//
// 摘要:
// 使用指定的路径和创建模式初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// path:
// 当前 FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// 异常:
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 已关闭流。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.IO.PathTooLongException:
// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。
//
// T:System.ArgumentOutOfRangeException:
// mode 包含无效值。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode);
//
// 摘要:
// 使用指定的读/写权限为指定的文件句柄初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// handle:
// 当前 FileStream 对象将封装的文件的文件句柄。
//
// access:
// 一个常数,用于设置 FileStream 对象的 System.IO.FileStream.CanRead 和 System.IO.FileStream.CanWrite
// 属性。
//
// 异常:
// T:System.ArgumentException:
// access 不是 System.IO.FileAccess 的字段。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如磁盘错误。 - 或 - 已关闭流。
//
// T:System.UnauthorizedAccessException:
// 对于指定的文件句柄,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件句柄设置为只读访问时会出现此情况。
[SecuritySafeCritical]
public FileStream(SafeFileHandle handle, FileAccess access);
//
// 摘要:
// 使用指定的读/写权限为指定的文件句柄初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// handle:
// 当前 FileStream 对象将封装的文件的文件句柄。
//
// access:
// 一个常数,用于设置 FileStream 对象的 System.IO.FileStream.CanRead 和 System.IO.FileStream.CanWrite
// 属性。
//
// 异常:
// T:System.ArgumentException:
// access 不是 System.IO.FileAccess 的字段。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如磁盘错误。 - 或 - 已关闭流。
//
// T:System.UnauthorizedAccessException:
// 对于指定的文件句柄,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件句柄设置为只读访问时会出现此情况。
[Obsolete("This constructor has been deprecated. Please use new FileStream(SafeFileHandle handle, FileAccess access) instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public FileStream(IntPtr handle, FileAccess access);
//
// 摘要:
// 使用指定的路径、创建模式和读/写权限初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// path:
// 当前 FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// access:
// 一个常数,用于确定 FileStream 对象访问文件的方式。 该常数还可以确定由 FileStream 对象的 System.IO.FileStream.CanRead
// 和 System.IO.FileStream.CanWrite 属性返回的值。 如果 path 指定磁盘文件,则 System.IO.FileStream.CanSeek
// 为 true。
//
// 异常:
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.UnauthorizedAccessException:
// 对于指定的 path,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件或目录设置为只读访问时会出现此情况。
//
// T:System.IO.PathTooLongException:
// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。
//
// T:System.ArgumentOutOfRangeException:
// mode 包含无效值。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileAccess access);
//
// 摘要:
// 使用指定的读/写权限和缓冲区大小为指定的文件句柄初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// handle:
// 当前 FileStream 对象将封装的文件的文件句柄。
//
// access:
// 一个 System.IO.FileAccess 常数,它设置 FileStream 对象的 System.IO.FileStream.CanRead 和
// System.IO.FileStream.CanWrite 属性。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// 异常:
// T:System.ArgumentException:
// handle 参数是无效的句柄。 - 或 - handle 参数是同步句柄,但被异步使用。
//
// T:System.ArgumentOutOfRangeException:
// bufferSize 参数为负。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如磁盘错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.UnauthorizedAccessException:
// 对于指定的文件句柄,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件句柄设置为只读访问时会出现此情况。
[SecuritySafeCritical]
public FileStream(SafeFileHandle handle, FileAccess access, int bufferSize);
//
// 摘要:
// 使用指定的读/写权限和 FileStream 实例所属权为指定的文件句柄初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// handle:
// 当前 FileStream 对象将封装的文件的文件句柄。
//
// access:
// 一个常数,用于设置 FileStream 对象的 System.IO.FileStream.CanRead 和 System.IO.FileStream.CanWrite
// 属性。
//
// ownsHandle:
// 如果文件句柄将由此 FileStream 实例所有,则为 true;否则为 false。
//
// 异常:
// T:System.ArgumentException:
// access 不是 System.IO.FileAccess 的字段。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如磁盘错误。 - 或 - 已关闭流。
//
// T:System.UnauthorizedAccessException:
// 对于指定的文件句柄,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件句柄设置为只读访问时会出现此情况。
[Obsolete("This constructor has been deprecated. Please use new FileStream(SafeFileHandle handle, FileAccess access) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed. http://go.microsoft.com/fwlink/?linkid=14202")]
public FileStream(IntPtr handle, FileAccess access, bool ownsHandle);
//
// 摘要:
// 使用指定的路径、创建模式、读/写权限和共享权限创建 System.IO.FileStream 类的新实例。
//
// 参数:
// path:
// 当前 FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// access:
// 一个常数,用于确定 FileStream 对象访问文件的方式。 该常数还可以确定由 FileStream 对象的 System.IO.FileStream.CanRead
// 和 System.IO.FileStream.CanWrite 属性返回的值。 如果 path 指定磁盘文件,则 System.IO.FileStream.CanSeek
// 为 true。
//
// share:
// 一个常数,确定文件将如何由进程共享。
//
// 异常:
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 系统正在运行 Windows 98
// 或 Windows 98 Second Edition,并将 share 设置为 FileShare.Delete。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.UnauthorizedAccessException:
// 对于指定的 path,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件或目录设置为只读访问时会出现此情况。
//
// T:System.IO.PathTooLongException:
// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。
//
// T:System.ArgumentOutOfRangeException:
// mode 包含无效值。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileAccess access, FileShare share);
//
// 摘要:
// 使用指定的读/写权限、缓冲区大小和同步或异步状态为指定的文件句柄初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// handle:
// 此 FileStream 对象将封装的文件的文件句柄。
//
// access:
// 一个常数,用于设置 FileStream 对象的 System.IO.FileStream.CanRead 和 System.IO.FileStream.CanWrite
// 属性。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// isAsync:
// 如果异步打开句柄(即以重叠的 I/O 模式),则为 true;否则为 false。
//
// 异常:
// T:System.ArgumentException:
// handle 参数是无效的句柄。 - 或 - handle 参数是同步句柄,但被异步使用。
//
// T:System.ArgumentOutOfRangeException:
// bufferSize 参数为负。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如磁盘错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.UnauthorizedAccessException:
// 对于指定的文件句柄,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件句柄设置为只读访问时会出现此情况。
[SecuritySafeCritical]
public FileStream(SafeFileHandle handle, FileAccess access, int bufferSize, bool isAsync);
//
// 摘要:
// 使用指定的读/写权限、FileStream 实例所属权和缓冲区大小为指定的文件句柄初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// handle:
// 此 FileStream 对象将封装的文件的文件句柄。
//
// access:
// 一个常数,用于设置 FileStream 对象的 System.IO.FileStream.CanRead 和 System.IO.FileStream.CanWrite
// 属性。
//
// ownsHandle:
// 如果文件句柄将由此 FileStream 实例所有,则为 true;否则为 false。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// 异常:
// T:System.ArgumentOutOfRangeException:
// bufferSize 为负数。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如磁盘错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.UnauthorizedAccessException:
// 对于指定的文件句柄,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件句柄设置为只读访问时会出现此情况。
[Obsolete("This constructor has been deprecated. Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed. http://go.microsoft.com/fwlink/?linkid=14202")]
public FileStream(IntPtr handle, FileAccess access, bool ownsHandle, int bufferSize);
//
// 摘要:
// 使用指定的读/写权限、FileStream 实例所属权、缓冲区大小和同步或异步状态为指定的文件句柄初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// handle:
// 此 FileStream 对象将封装的文件的文件句柄。
//
// access:
// 一个常数,用于设置 FileStream 对象的 System.IO.FileStream.CanRead 和 System.IO.FileStream.CanWrite
// 属性。
//
// ownsHandle:
// 如果文件句柄将由此 FileStream 实例所有,则为 true;否则为 false。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// isAsync:
// 如果异步打开句柄(即以重叠的 I/O 模式),则为 true;否则为 false。
//
// 异常:
// T:System.ArgumentOutOfRangeException:
// access 小于 FileAccess.Read 或大于 FileAccess.ReadWrite,或者 bufferSize 小于等于 0。
//
// T:System.ArgumentException:
// 该句柄无效。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如磁盘错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.UnauthorizedAccessException:
// 对于指定的文件句柄,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件句柄设置为只读访问时会出现此情况。
[Obsolete("This constructor has been deprecated. Please use new FileStream(SafeFileHandle handle, FileAccess access, int bufferSize, bool isAsync) instead, and optionally make a new SafeFileHandle with ownsHandle=false if needed. http://go.microsoft.com/fwlink/?linkid=14202")]
[SecuritySafeCritical]
public FileStream(IntPtr handle, FileAccess access, bool ownsHandle, int bufferSize, bool isAsync);
//
// 摘要:
// 用指定的路径、创建模式、读/写及共享权限和缓冲区大小初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// path:
// 当前 FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// access:
// 一个常数,用于确定 FileStream 对象访问文件的方式。 该常数还可以确定由 FileStream 对象的 System.IO.FileStream.CanRead
// 和 System.IO.FileStream.CanWrite 属性返回的值。 如果 path 指定磁盘文件,则 System.IO.FileStream.CanSeek
// 为 true。
//
// share:
// 一个常数,确定文件将如何由进程共享。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// 异常:
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.ArgumentOutOfRangeException:
// bufferSize 为负数或零。 - 或 - mode、access 或 share 包含无效的值。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 系统正在运行 Windows 98
// 或 Windows 98 Second Edition,并将 share 设置为 FileShare.Delete。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.UnauthorizedAccessException:
// 对于指定的 path,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件或目录设置为只读访问时会出现此情况。
//
// T:System.IO.PathTooLongException:
// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize);
//
// 摘要:
// 使用指定的路径、创建模式、读/写和共享权限、缓冲区大小和同步或异步状态初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// path:
// 当前 FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// access:
// 一个常数,用于确定 FileStream 对象访问文件的方式。 该常数还可以确定由 FileStream 对象的 System.IO.FileStream.CanRead
// 和 System.IO.FileStream.CanWrite 属性返回的值。 如果 path 指定磁盘文件,则 System.IO.FileStream.CanSeek
// 为 true。
//
// share:
// 一个常数,确定文件将如何由进程共享。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// useAsync:
// 指定使用异步 I/O 还是同步 I/O。 但是,请注意,基础操作系统可能不支持异步 I/O,因此在指定 true 后,根据所用平台,句柄可能同步打开。 当异步打开时,System.IO.FileStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
// 和 System.IO.FileStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
// 方法在执行大量读或写时效果更好,但对于少量的读/写,这些方法速度可能要慢得多。 如果应用程序打算利用异步 I/O,将 useAsync 参数设置为 true。
// 正确使用异步 I/O 可以使应用程序的速度加快 10 倍,但是如果在没有为异步 I/O 重新设计应用程序的情况下使用异步 I/O,则可能使性能降低 10
// 倍。
//
// 异常:
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.ArgumentOutOfRangeException:
// bufferSize 为负数或零。 - 或 - mode、access 或 share 包含无效的值。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 系统正在运行 Windows 98
// 或 Windows 98 Second Edition,并将 share 设置为 FileShare.Delete。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.UnauthorizedAccessException:
// 对于指定的 path,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件或目录设置为只读访问时会出现此情况。
//
// T:System.IO.PathTooLongException:
// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, bool useAsync);
//
// 摘要:
// 使用指定的路径、创建模式、读/写和共享权限、其他 FileStreams 可以具有的对此文件的访问权限、缓冲区大小和附加文件选项初始化 System.IO.FileStream
// 类的新实例。
//
// 参数:
// path:
// 当前 FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// access:
// 一个常数,用于确定 FileStream 对象访问文件的方式。 该常数还可以确定由 FileStream 对象的 System.IO.FileStream.CanRead
// 和 System.IO.FileStream.CanWrite 属性返回的值。 如果 path 指定磁盘文件,则 System.IO.FileStream.CanSeek
// 为 true。
//
// share:
// 一个常数,确定文件将如何由进程共享。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// options:
// 一个指定附加文件选项的值。
//
// 异常:
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.ArgumentOutOfRangeException:
// bufferSize 为负数或零。 - 或 - mode、access 或 share 包含无效的值。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.UnauthorizedAccessException:
// 对于指定的 path,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件或目录设置为只读访问时会出现此情况。
// - 或 - System.IO.FileOptions.Encrypted 指定用于 options,但在当前平台上不支持文件加密。
//
// T:System.IO.PathTooLongException:
// 指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options);
//
// 摘要:
// 使用指定的路径、创建模式、访问权限和共享权限、缓冲区大小和附加文件选项初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// path:
// 当前 System.IO.FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// rights:
// 一个常数,确定为文件创建访问和审核规则时要使用的访问权。
//
// share:
// 一个常数,确定文件将如何由进程共享。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// options:
// 一个指定附加文件选项的常数。
//
// 异常:
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.ArgumentOutOfRangeException:
// bufferSize 为负数或零。 - 或 - mode、access 或 share 包含无效的值。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.PlatformNotSupportedException:
// 当前操作系统不是 Windows NT 或更高版本。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.UnauthorizedAccessException:
// 对于指定的 path,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件或目录设置为只读访问时会出现此情况。
// - 或 - System.IO.FileOptions.Encrypted被指定用于 options,但在当前平台上不支持文件加密。
//
// T:System.IO.PathTooLongException:
// 指定的 path、文件名或这两者都超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260
// 个字符。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileSystemRights rights, FileShare share, int bufferSize, FileOptions options);
//
// 摘要:
// 使用指定的路径、创建模式、访问权限和共享权限、缓冲区大小、附加文件选项、访问控制和审核安全初始化 System.IO.FileStream 类的新实例。
//
// 参数:
// path:
// 当前 System.IO.FileStream 对象将封装的文件的相对路径或绝对路径。
//
// mode:
// 一个确定如何打开或创建文件的常数。
//
// rights:
// 一个常数,确定为文件创建访问和审核规则时要使用的访问权。
//
// share:
// 一个常数,确定文件将如何由进程共享。
//
// bufferSize:
// 一个大于零的正 System.Int32 值,表示缓冲区大小。 默认缓冲区大小为 4096。
//
// options:
// 一个指定附加文件选项的常数。
//
// fileSecurity:
// 一个常数,确定文件的访问控制和审核安全。
//
// 异常:
// T:System.ArgumentNullException:
// path 为 null。
//
// T:System.ArgumentException:
// path 是一个空字符串 (""),仅包含空格,或者包含一个或多个无效字符。 - 或 - path 指非文件设备,如 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.NotSupportedException:
// path 指非文件设备,如非 NTFS 环境中的“con:”、“com1:”、“lpt1:”等。
//
// T:System.ArgumentOutOfRangeException:
// bufferSize 为负数或零。 - 或 - mode、access 或 share 包含无效的值。
//
// T:System.IO.FileNotFoundException:
// 找不到该文件。例如,当 mode 是 FileMode.Truncate 或 FileMode.Open,并且 path 指定的文件不存在时会出现这种情况。
// 该文件必须以这些模式存在。
//
// T:System.IO.IOException:
// I/O 错误,例如在 path 指定的文件已存在时指定 FileMode.CreateNew,会发生此错误。 - 或 - 已关闭流。
//
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
//
// T:System.IO.DirectoryNotFoundException:
// 指定的路径无效,例如位于未映射的驱动器上。
//
// T:System.UnauthorizedAccessException:
// 对于指定的 path,操作系统不允许所请求的 access。例如当 access 是 Write 或 ReadWrite,并将文件或目录设置为只读访问时会出现此情况。
// - 或 - System.IO.FileOptions.Encrypted被指定用于 options,但在当前平台上不支持文件加密。
//
// T:System.IO.PathTooLongException:
// 指定的 path、文件名或这两者都超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260
// 个字符。
//
// T:System.PlatformNotSupportedException:
// 当前操作系统不是 Windows NT 或更高版本。
[SecuritySafeCritical]
public FileStream(string path, FileMode mode, FileSystemRights rights, FileShare share, int bufferSize, FileOptions options, FileSecurity fileSecurity);
//
// 摘要:
// 确保垃圾回收器回收 FileStream 时释放资源并执行其他清理操作。
[SecuritySafeCritical]
~FileStream();
//
// 摘要:
// 获取一个值,该值指示当前流是否支持写入。
//
// 返回结果:
// 如果流支持写入,则为 true;如果流已关闭或是通过只读访问方式打开的,则为 false。
public override bool CanWrite { get; }
//
// 摘要:
// 获取或设置此流的当前位置。
//
// 返回结果:
// 此流的当前位置。
//
// 异常:
// T:System.NotSupportedException:
// 流不支持查找。
//
// T:System.IO.IOException:
// 出现 I/O 错误。 - 或 - 将位置设置为非常大的值,此值超出 Windows 98 或更早版本中的流的末尾。
//
// T:System.ArgumentOutOfRangeException:
// 试图将位置设置为负值。
//
// T:System.IO.EndOfStreamException:
// 试图越过不支持此值的流的末尾进行查找。
public override long Position { get; set; }
//
// 摘要:
// 获取传递给构造函数的 FileStream 的名称。
//
// 返回结果:
// 一个字符串,它是 FileStream 的名称。
public string Name { get; }
//
// 摘要:
// 获取用字节表示的流长度。
//
// 返回结果:
// 表示流长度(以字节为单位)的长值。
//
// 异常:
// T:System.NotSupportedException:
// 此流的 System.IO.FileStream.CanSeek 为 false。
//
// T:System.IO.IOException:
// 出现 I/O 错误,例如文件被关闭。
public override long Length { get; }
//
// 摘要:
// 获取一个值,该值指示 FileStream 是异步还是同步打开的。
//
// 返回结果:
// 如果 FileStream 是异步打开的,则为 true,否则为 false。
public virtual bool IsAsync { get; }
//
// 摘要:
// 获取一个值,该值指示当前流是否支持查找。
//
// 返回结果:
// 如果流支持查找,则为 true;如果流已关闭或者如果 FileStream 是从操作系统句柄(如管道或到控制台的输出)构造的,则为 false。
public override bool CanSeek { get; }
//
// 摘要:
// 获取一个值,该值指示当前流是否支持读取。
//
// 返回结果:
// 如果流支持读取,则为 true;如果流已关闭或是通过只写访问方式打开的,则为 false。
public override bool CanRead { get; }
//
// 摘要:
// 获取 Microsoft.Win32.SafeHandles.SafeFileHandle 对象,它代表当前 System.IO.FileStream 对象所封装的文件的操作系统文件句柄。
//
// 返回结果:
// 一个对象,该对象表示当前 System.IO.FileStream 对象封装的文件的操作系统文件句柄。
public virtual SafeFileHandle SafeFileHandle { get; }
//
// 摘要:
// 获取当前 FileStream 对象所封装文件的操作系统文件句柄。
//
// 返回结果:
// 此 FileStream 对象所封装文件的操作系统文件句柄;如果 FileStream 已关闭,则为 -1。
//
// 异常:
// T:System.Security.SecurityException:
// 调用方没有所要求的权限。
[Obsolete("This property has been deprecated. Please use FileStream's SafeFileHandle property instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public virtual IntPtr Handle { get; }
//
// 摘要:
// 开始异步读操作。 (考虑使用 System.IO.FileStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)
// 进行替换;请参见“备注”部分。)
//
// 参数:
// array:
// 将数据读入的缓冲区。
//
// offset:
// array 中的字节偏移量,从此处开始读取。
//
// numBytes:
// 最多读取的字节数。
//
// userCallback:
// 异步读操作完成后调用的方法。
//
// stateObject:
// 一个用户提供的对象,它将该特定的异步读取请求与其他请求区别开来。
//
// 返回结果:
// 引用异步读取的对象。
//
// 异常:
// T:System.ArgumentException:
// 数组长度减去 offset 小于 numBytes。
//
// T:System.ArgumentNullException:
// array 为 null。
//
// T:System.ArgumentOutOfRangeException:
// offset 或 numBytes 为负数。
//
// T:System.IO.IOException:
// 尝试在文件的末尾后进行异步读取。
[SecuritySafeCritical]
public override IAsyncResult BeginRead(byte[] array, int offset, int numBytes, AsyncCallback userCallback, object stateObject);
//
// 摘要:
// 开始异步写操作。 (考虑使用 System.IO.FileStream.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)
// 进行替换;请参见“备注”部分。)
//
// 参数:
// array:
// 包含要写入当前流的数据的缓冲区。
//
// offset:
// array 中的从零开始的字节偏移量,从此处开始将字节复制到当前流。
//
// numBytes:
// 最多写入的字节数。
//
// userCallback:
// 异步写操作完成后调用的方法。
//
// stateObject:
// 一个用户提供的对象,它将该特定的异步写入请求与其他请求区别开来。
//
// 返回结果:
// 引用异步写入的对象。
//
// 异常:
// T:System.ArgumentException:
// array 长度减去 offset 小于 numBytes。
//
// T:System.ArgumentNullException:
// array 为 null。
//
// T:System.ArgumentOutOfRangeException:
// offset 或 numBytes 为负数。
//
// T:System.NotSupportedException:
// 流不支持写入。
//
// T:System.ObjectDisposedException:
// 流已关闭。
//
// T:System.IO.IOException:
// 出现 I/O 错误。
[SecuritySafeCritical]
public override IAsyncResult BeginWrite(byte[] array, int offset, int numBytes, AsyncCallback userCallback, object stateObject);
//
// 摘要:
// 等待挂起的异步读操作完成。 (考虑使用 System.IO.FileStream.ReadAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)
// 进行替换;请参见“备注”部分。)
//
// 参数:
// asyncResult:
// 对所等待的挂起异步请求的引用。
//
// 返回结果:
// 从流中读取的字节数,介于 0 和所请求的字节数之间。 流仅在流结尾返回 0,否则在至少有 1 个字节可用之前应一直进行阻止。。
//
// 异常:
// T:System.ArgumentNullException:
// asyncResult 为 null。
//
// T:System.ArgumentException:
// 此 System.IAsyncResult 对象不是通过对该类调用 System.IO.FileStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
// 来创建的。
//
// T:System.InvalidOperationException:
// 多次调用了 System.IO.FileStream.EndRead(System.IAsyncResult)。
//
// T:System.IO.IOException:
// 流已关闭或出现了内部错误。
[SecuritySafeCritical]
public override int EndRead(IAsyncResult asyncResult);
//
// 摘要:
// 结束异步写入操作,在 I/O 操作完成之前一直阻止。 (考虑使用 System.IO.FileStream.WriteAsync(System.Byte[],System.Int32,System.Int32,System.Threading.CancellationToken)
// 进行替换;请参见“备注”部分。)
//
// 参数:
// asyncResult:
// 挂起的异步 I/O 请求。
//
// 异常:
// T:System.ArgumentNullException:
// asyncResult 为 null。
//
// T:System.ArgumentException:
// 此 System.IAsyncResult 对象不是通过对该类调用 System.IO.Stream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
// 来创建的。
//
// T:System.InvalidOperationException:
// 多次调用了 System.IO.FileStream.EndWrite(System.IAsyncResult)。
//
// T:System.IO.IOException:
// 流已关闭或出现了内部错误。
[SecuritySafeCritical]
public override void EndWrite(IAsyncResult asyncResult);
//
// 摘要:
// 清除此流的缓冲区,使得所有缓冲数据都写入到文件中。
//
// 异常:
// T:System.IO.IOException:
// 出现 I/O 错误。
//
// T:System.ObjectDisposedException:
// 流已关闭。
public override void Flush();
//
// 摘要:
// 清除此流的缓冲区,将所有缓冲数据都写入到文件中,并且也清除所有中间文件缓冲区。
//
// 参数:
// flushToDisk:
// 如果刷新所有中间文件缓冲区,则为 true;否则为 false。
[SecuritySafeCritical]
public virtual void Flush(bool flushToDisk);
//
// 摘要:
// 异步清理这个流的所有缓冲区,并使所有缓冲数据写入基础设备,并且监控取消请求。
//
// 参数:
// cancellationToken:
// 要监视取消请求的标记。
//
// 返回结果:
// 表示异步刷新操作的任务。
//
// 异常:
// T:System.ObjectDisposedException:
// 已释放流。
[ComVisible(false)]
[SecuritySafeCritical]
public override Task FlushAsync(CancellationToken cancellationToken);
//
// 摘要:
// 获取 System.Security.AccessControl.FileSecurity 对象,该对象封装当前 System.IO.FileStream
// 对象所描述的文件的访问控制列表 (ACL) 项。
//
// 返回结果:
// 一个对象,该对象封装当前 System.IO.FileStream 对象所描述的文件的访问控制设置。
//
// 异常:
// T:System.ObjectDisposedException:
// 文件关闭。
//
// T:System.IO.IOException:
// 打开文件时发生 I/O 错误。
//
// T:System.SystemException:
// 找不到文件。
//
// T:System.UnauthorizedAccessException:
// 当前平台不支持此操作。 - 或 - 调用方没有所要求的权限。
[SecuritySafeCritical]
public FileSecurity GetAccessControl();
//
// 摘要:
// 防止其他进程读取或写入 System.IO.FileStream。
//
// 参数:
// position:
// 要锁定的范围的起始处。 此参数的值必须大于或等于零 (0)。
//
// length:
// 要锁定的范围。
//
// 异常:
// T:System.ArgumentOutOfRangeException:
// position 或 length 为负数。
//
// T:System.ObjectDisposedException:
// 文件关闭。
//
// T:System.IO.IOException:
// 另一个进程已锁定了文件的一部分,因此进程无法访问该文件。
[SecuritySafeCritical]
public virtual void Lock(long position, long length);
//
// 摘要:
// 从流中读取字节块并将该数据写入给定缓冲区中。
//
// 参数:
// array:
// 此方法返回时包含指定的字节数组,数组中 offset 和 (offset + count - 1) 之间的值由从当前源中读取的字节替换。
//
// offset:
// array 中的字节偏移量,将在此处放置读取的字节。
//
// count:
// 最多读取的字节数。
//
// 返回结果:
// 读入缓冲区中的总字节数。 如果字节数当前不可用,则总字节数可能小于所请求的字节数;如果已到达流结尾,则为零。
//
// 异常:
// T:System.ArgumentNullException:
// array 为 null。
//
// T:System.ArgumentOutOfRangeException:
// offset 或 count 为负数。
//
// T:System.NotSupportedException:
// 流不支持读取。
//
// T:System.IO.IOException:
// 出现 I/O 错误。
//
// T:System.ArgumentException:
// offset 和 count 描述 array 中的无效范围。
//
// T:System.ObjectDisposedException:
// 在流关闭后调用方法。
[SecuritySafeCritical]
public override int Read(byte[] array, int offset, int count);
//
// 摘要:
// 从当前流异步读取字节的序列,将流中的位置提升读取的字节数,并监视取消请求。
//
// 参数:
// buffer:
// 数据写入的缓冲区。
//
// offset:
// buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。
//
// count:
// 最多读取的字节数。
//
// cancellationToken:
// 要监视取消请求的标记。
//
// 返回结果:
// 表示异步读取操作的任务。 TResult 参数的值包含读入缓冲区的总字节数。 如果当前可用字节数少于所请求的字节数,则该结果值可小于所请求的字节数;如果已到达流结尾时,则为
// 0(零)。
//
// 异常:
// T:System.ArgumentNullException:
// buffer 为 null。
//
// T:System.ArgumentOutOfRangeException:
// offset 或 count 为负数。
//
// T:System.ArgumentException:
// offset 和 count 的总和大于缓冲区长度。
//
// T:System.NotSupportedException:
// 流不支持读取。
//
// T:System.ObjectDisposedException:
// 已释放流。
//
// T:System.InvalidOperationException:
// 之前的读取操作当前正在使用流。
[ComVisible(false)]
[SecuritySafeCritical]
public override Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken);
//
// 摘要:
// 从文件中读取一个字节,并将读取位置提升一个字节。
//
// 返回结果:
// 强制转换为 System.Int32 的字节;或者如果已到达流的末尾,则为 -1。
//
// 异常:
// T:System.NotSupportedException:
// 当前流不支持读取。
//
// T:System.ObjectDisposedException:
// 当前流已关闭。
[SecuritySafeCritical]
public override int ReadByte();
//
// 摘要:
// 将该流的当前位置设置为给定值。
//
// 参数:
// offset:
// 相对于 origin 的点,从此处开始查找。
//
// origin:
// 使用 System.IO.SeekOrigin 类型的值,将开始位置、结束位置或当前位置指定为 offset 的参考点。
//
// 返回结果:
// 流中的新位置。
//
// 异常:
// T:System.IO.IOException:
// 出现 I/O 错误。
//
// T:System.NotSupportedException:
// 该流不支持查找,例如如果 FileStream 是从管道或控制台输出构造的,则不支持查找。
//
// T:System.ArgumentException:
// 试图在流的开始位置之前进行查找。
//
// T:System.ObjectDisposedException:
// 在流关闭后调用方法。
[SecuritySafeCritical]
public override long Seek(long offset, SeekOrigin origin);
//
// 摘要:
// 将 System.Security.AccessControl.FileSecurity 对象所描述的访问控制列表 (ACL) 项应用于当前 System.IO.FileStream
// 对象所描述的文件。
//
// 参数:
// fileSecurity:
// 描述要应用于当前文件的 ACL 项的对象。
//
// 异常:
// T:System.ObjectDisposedException:
// 文件关闭。
//
// T:System.ArgumentNullException:
// fileSecurity 参数为 null。
//
// T:System.SystemException:
// 未能找到或修改该文件。
//
// T:System.UnauthorizedAccessException:
// 当前进程不具有打开该文件的权限。
[SecuritySafeCritical]
public void SetAccessControl(FileSecurity fileSecurity);
//
// 摘要:
// 将该流的长度设置为给定值。
//
// 参数:
// value:
// 流的新长度。
//
// 异常:
// T:System.IO.IOException:
// 发生了 I/O 错误。
//
// T:System.NotSupportedException:
// 该流不支持写入和查找。
//
// T:System.ArgumentOutOfRangeException:
// 试图将 value 参数设置为小于 0。
[SecuritySafeCritical]
public override void SetLength(long value);
//
// 摘要:
// 允许其他进程访问以前锁定的某个文件的全部或部分。
//
// 参数:
// position:
// 要取消锁定的范围的开始处。
//
// length:
// 要取消锁定的范围。
//
// 异常:
// T:System.ArgumentOutOfRangeException:
// position 或 length 为负。
[SecuritySafeCritical]
public virtual void Unlock(long position, long length);
//
// 摘要:
// 将字节块写入文件流。
//
// 参数:
// array:
// 包含要写入该流的数据的缓冲区。
//
// offset:
// array 中的从零开始的字节偏移量,从此处开始将字节复制到该流。
//
// count:
// 最多写入的字节数。
//
// 异常:
// T:System.ArgumentNullException:
// array 为 null。
//
// T:System.ArgumentException:
// offset 和 count 描述 array 中的无效范围。
//
// T:System.ArgumentOutOfRangeException:
// offset 或 count 为负数。
//
// T:System.IO.IOException:
// 出现 I/O 错误。 - 或 - 另一个线程可能导致操作系统的文件句柄的位置发生意外更改。
//
// T:System.ObjectDisposedException:
// 流已关闭。
//
// T:System.NotSupportedException:
// 当前的流实例不支持写入。
[SecuritySafeCritical]
public override void Write(byte[] array, int offset, int count);
//
// 摘要:
// 将字节的序列异步写入当前流,将该流中的当前位置向前移动写入的字节数,并监视取消请求。
//
// 参数:
// buffer:
// 从中写入数据的缓冲区。
//
// offset:
// buffer 中的从零开始的字节偏移量,从此处开始将字节复制到该流。
//
// count:
// 最多写入的字节数。
//
// cancellationToken:
// 要监视取消请求的标记。
//
// 返回结果:
// 表示异步写入操作的任务。
//
// 异常:
// T:System.ArgumentNullException:
// buffer 为 null。
//
// T:System.ArgumentOutOfRangeException:
// offset 或 count 为负数。
//
// T:System.ArgumentException:
// offset 和 count 的总和大于缓冲区长度。
//
// T:System.NotSupportedException:
// 流不支持写入。
//
// T:System.ObjectDisposedException:
// 已释放流。
//
// T:System.InvalidOperationException:
// 流正在由前一次写操作使用。
[ComVisible(false)]
[SecuritySafeCritical]
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken);
//
// 摘要:
// 一个字节写入文件流中的当前位置。
//
// 参数:
// value:
// 要写入流的字节。
//
// 异常:
// T:System.ObjectDisposedException:
// 流已关闭。
//
// T:System.NotSupportedException:
// 流不支持写入。
[SecuritySafeCritical]
public override void WriteByte(byte value);
//
// 摘要:
// 释放由 System.IO.FileStream 占用的非托管资源,还可以另外再释放托管资源。
//
// 参数:
// disposing:
// 若要释放托管资源和非托管资源,则为 true;若仅释放非托管资源,则为 false。
[SecuritySafeCritical]
protected override void Dispose(bool disposing);
}
}