ylbtech-System.IO.Stream.cs
1.返回顶部
1、
  1. #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  2. // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll
  3. #endregion
  4.  
  5. using System.Runtime;
  6. using System.Runtime.InteropServices;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9.  
  10. namespace System.IO
  11. {
  12. //
  13. // 摘要:
  14. // 提供字节序列的一般视图。 这是一个抽象类。若要浏览此类型的.NET Framework 源代码,请参阅 Reference Source。
  15. [ComVisible(true)]
  16. public abstract class Stream : MarshalByRefObject, IDisposable
  17. {
  18. //
  19. // 摘要:
  20. // 无后备存储区的 Stream。
  21. public static readonly Stream Null;
  22.  
  23. //
  24. // 摘要:
  25. // 初始化 System.IO.Stream 类的新实例。
  26. protected Stream();
  27.  
  28. //
  29. // 摘要:
  30. // 当在派生类中重写时,获取或设置当前流中的位置。
  31. //
  32. // 返回结果:
  33. // 流中的当前位置。
  34. //
  35. // 异常:
  36. // T:System.IO.IOException:
  37. // 出现 I/O 错误。
  38. //
  39. // T:System.NotSupportedException:
  40. // 流不支持查找。
  41. //
  42. // T:System.ObjectDisposedException:
  43. // 在流关闭后调用方法。
  44. public abstract long Position { get; set; }
  45. //
  46. // 摘要:
  47. // 当在派生类中重写时,获取流长度(以字节为单位)。
  48. //
  49. // 返回结果:
  50. // 表示流长度(以字节为单位)的长值。
  51. //
  52. // 异常:
  53. // T:System.NotSupportedException:
  54. // 从派生的类 Stream 不支持查找。
  55. //
  56. // T:System.ObjectDisposedException:
  57. // 在流关闭后调用方法。
  58. public abstract long Length { get; }
  59. //
  60. // 摘要:
  61. // 当在派生类中重写时,获取指示当前流是否支持写入功能的值。
  62. //
  63. // 返回结果:
  64. // 如果流支持写入,则为 true;否则为 false。
  65. public abstract bool CanWrite { get; }
  66. //
  67. // 摘要:
  68. // 获取一个值,该值确定当前流是否可以超时。
  69. //
  70. // 返回结果:
  71. // 一个确定当前流是否可以超时的值。
  72. [ComVisible(false)]
  73. public virtual bool CanTimeout { get; }
  74. //
  75. // 摘要:
  76. // 当在派生类中重写时,获取指示当前流是否支持查找功能的值。
  77. //
  78. // 返回结果:
  79. // 如果流支持查找,为 true;否则为 false。
  80. public abstract bool CanSeek { get; }
  81. //
  82. // 摘要:
  83. // 当在派生类中重写时,获取指示当前流是否支持读取的值。
  84. //
  85. // 返回结果:
  86. // 如果流支持读取,为 true;否则为 false。
  87. public abstract bool CanRead { get; }
  88. //
  89. // 摘要:
  90. // 获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试读取多长时间。
  91. //
  92. // 返回结果:
  93. // 一个确定流在超时前尝试读取多长时间的值(以毫秒为单位)。
  94. //
  95. // 异常:
  96. // T:System.InvalidOperationException:
  97. // System.IO.Stream.ReadTimeout 方法始终引发 System.InvalidOperationException。
  98. [ComVisible(false)]
  99. public virtual int ReadTimeout { get; set; }
  100. //
  101. // 摘要:
  102. // 获取或设置一个值(以毫秒为单位),该值确定流在超时前尝试写入多长时间。
  103. //
  104. // 返回结果:
  105. // 一个确定流在超时前尝试写入多长时间的值(以毫秒为单位)。
  106. //
  107. // 异常:
  108. // T:System.InvalidOperationException:
  109. // System.IO.Stream.WriteTimeout 方法始终引发 System.InvalidOperationException。
  110. [ComVisible(false)]
  111. public virtual int WriteTimeout { get; set; }
  112.  
  113. //
  114. // 摘要:
  115. // 在指定的 System.IO.Stream 对象周围创建线程安全(同步)包装。
  116. //
  117. // 参数:
  118. // stream:
  119. // 要同步的 System.IO.Stream 对象。
  120. //
  121. // 返回结果:
  122. // 一个线程安全的 System.IO.Stream 对象。
  123. //
  124. // 异常:
  125. // T:System.ArgumentNullException:
  126. // stream 为 null。
  127. public static Stream Synchronized(Stream stream);
  128. //
  129. // 摘要:
  130. // 开始异步读操作。 (考虑使用 System.IO.Stream.ReadAsync(System.Byte[],System.Int32,System.Int32)
  131. // 进行替换;请参见“备注”部分。)
  132. //
  133. // 参数:
  134. // buffer:
  135. // 数据读入的缓冲区。
  136. //
  137. // offset:
  138. // buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。
  139. //
  140. // count:
  141. // 最多读取的字节数。
  142. //
  143. // callback:
  144. // 可选的异步回调,在完成读取时调用。
  145. //
  146. // state:
  147. // 一个用户提供的对象,它将该特定的异步读取请求与其他请求区别开来。
  148. //
  149. // 返回结果:
  150. // 表示异步读取的 System.IAsyncResult(可能仍处于挂起状态)。
  151. //
  152. // 异常:
  153. // T:System.IO.IOException:
  154. // 尝试超出末尾的流中的异步读取或发生了磁盘错误。
  155. //
  156. // T:System.ArgumentException:
  157. // 一个或多个参数无效。
  158. //
  159. // T:System.ObjectDisposedException:
  160. // 在流关闭后调用方法。
  161. //
  162. // T:System.NotSupportedException:
  163. // 当前 Stream 实现不支持读取的操作。
  164. public virtual IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
  165. //
  166. // 摘要:
  167. // 开始异步写操作。 (考虑使用 System.IO.Stream.WriteAsync(System.Byte[],System.Int32,System.Int32)
  168. // 进行替换;请参见“备注”部分。)
  169. //
  170. // 参数:
  171. // buffer:
  172. // 从中写入数据的缓冲区。
  173. //
  174. // offset:
  175. // buffer 中的字节偏移量,从此处开始写入。
  176. //
  177. // count:
  178. // 最多写入的字节数。
  179. //
  180. // callback:
  181. // 可选的异步回调,在完成写入时调用。
  182. //
  183. // state:
  184. // 一个用户提供的对象,它将该特定的异步写入请求与其他请求区别开来。
  185. //
  186. // 返回结果:
  187. // 表示异步写入的 IAsyncResult(可能仍处于挂起状态)。
  188. //
  189. // 异常:
  190. // T:System.IO.IOException:
  191. // 尝试异步写入该流的末尾,或者发生了磁盘错误。
  192. //
  193. // T:System.ArgumentException:
  194. // 一个或多个参数无效。
  195. //
  196. // T:System.ObjectDisposedException:
  197. // 在流关闭后调用方法。
  198. //
  199. // T:System.NotSupportedException:
  200. // 当前 Stream 实现不支持写入操作。
  201. public virtual IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state);
  202. //
  203. // 摘要:
  204. // 关闭当前流并释放与之关联的所有资源(如套接字和文件句柄)。 不直接调用此方法,而应确保流得以正确释放。
  205. public virtual void Close();
  206. //
  207. // 摘要:
  208. // 从当前流中读取字节并将其写入到另一流中。
  209. //
  210. // 参数:
  211. // destination:
  212. // 当前流的内容将复制到的流。
  213. //
  214. // 异常:
  215. // T:System.ArgumentNullException:
  216. // destination 为 null。
  217. //
  218. // T:System.NotSupportedException:
  219. // 当前流不支持读取。- 或 -destination 不支持写入。
  220. //
  221. // T:System.ObjectDisposedException:
  222. // 当前流或 destination 之前关闭 System.IO.Stream.CopyTo(System.IO.Stream) 方法被调用。
  223. //
  224. // T:System.IO.IOException:
  225. // 出现 I/O 错误。
  226. public void CopyTo(Stream destination);
  227. //
  228. // 摘要:
  229. // 使用指定的缓冲区大小,从当前流中读取字节并将其写入到另一流中。
  230. //
  231. // 参数:
  232. // destination:
  233. // 当前流的内容将复制到的流。
  234. //
  235. // bufferSize:
  236. // 缓冲区的大小。 此值必须大于零。 默认大小为 81920。
  237. //
  238. // 异常:
  239. // T:System.ArgumentNullException:
  240. // destination 为 null。
  241. //
  242. // T:System.ArgumentOutOfRangeException:
  243. // bufferSize 为负数或零。
  244. //
  245. // T:System.NotSupportedException:
  246. // 当前流不支持读取。- 或 -destination 不支持写入。
  247. //
  248. // T:System.ObjectDisposedException:
  249. // 当前流或 destination 之前关闭 System.IO.Stream.CopyTo(System.IO.Stream) 方法被调用。
  250. //
  251. // T:System.IO.IOException:
  252. // 出现 I/O 错误。
  253. public void CopyTo(Stream destination, int bufferSize);
  254. //
  255. // 摘要:
  256. // 从当前流中异步读取字节并将其写入到另一个流中。
  257. //
  258. // 参数:
  259. // destination:
  260. // 当前流的内容将复制到的流。
  261. //
  262. // 返回结果:
  263. // 表示异步复制操作的任务。
  264. //
  265. // 异常:
  266. // T:System.ArgumentNullException:
  267. // destination 为 null。
  268. //
  269. // T:System.ObjectDisposedException:
  270. // 已释放当前的流或目标流。
  271. //
  272. // T:System.NotSupportedException:
  273. // 当前的流不支持读取,或目标流不支持写入。
  274. [ComVisible(false)]
  275. public Task CopyToAsync(Stream destination);
  276. //
  277. // 摘要:
  278. // 使用指定的缓冲区大小,从当前流中异步读取字节并将其写入到另一流中。
  279. //
  280. // 参数:
  281. // destination:
  282. // 当前流的内容将复制到的流。
  283. //
  284. // bufferSize:
  285. // 缓冲区的大小(以字节为单位)。 此值必须大于零。 默认大小为 81920。
  286. //
  287. // 返回结果:
  288. // 表示异步复制操作的任务。
  289. //
  290. // 异常:
  291. // T:System.ArgumentNullException:
  292. // destination 为 null。
  293. //
  294. // T:System.ArgumentOutOfRangeException:
  295. // buffersize 为负数或零。
  296. //
  297. // T:System.ObjectDisposedException:
  298. // 已释放当前的流或目标流。
  299. //
  300. // T:System.NotSupportedException:
  301. // 当前的流不支持读取,或目标流不支持写入。
  302. [ComVisible(false)]
  303. public Task CopyToAsync(Stream destination, int bufferSize);
  304. //
  305. // 摘要:
  306. // 使用指定的缓冲区大小和取消令牌,从当前流中异步读取字节并将其写入到另一个流中。
  307. //
  308. // 参数:
  309. // destination:
  310. // 当前流的内容将复制到的流。
  311. //
  312. // bufferSize:
  313. // 缓冲区的大小(以字节为单位)。 此值必须大于零。 默认大小为 81920。
  314. //
  315. // cancellationToken:
  316. // 要监视取消请求的标记。 默认值为 System.Threading.CancellationToken.None。
  317. //
  318. // 返回结果:
  319. // 表示异步复制操作的任务。
  320. //
  321. // 异常:
  322. // T:System.ArgumentNullException:
  323. // destination 为 null。
  324. //
  325. // T:System.ArgumentOutOfRangeException:
  326. // buffersize 为负数或零。
  327. //
  328. // T:System.ObjectDisposedException:
  329. // 已释放当前的流或目标流。
  330. //
  331. // T:System.NotSupportedException:
  332. // 当前的流不支持读取,或目标流不支持写入。
  333. [ComVisible(false)]
  334. public virtual Task CopyToAsync(Stream destination, int bufferSize, CancellationToken cancellationToken);
  335. //
  336. // 摘要:
  337. // 释放由 System.IO.Stream 使用的所有资源。
  338. public void Dispose();
  339. //
  340. // 摘要:
  341. // 等待挂起的异步读取完成。 (考虑使用 System.IO.Stream.ReadAsync(System.Byte[],System.Int32,System.Int32)
  342. // 进行替换;请参见“备注”部分。)
  343. //
  344. // 参数:
  345. // asyncResult:
  346. // 对要完成的挂起异步请求的引用。
  347. //
  348. // 返回结果:
  349. // 从流中读取的字节数,介于零 (0) 和所请求的字节数之间。 流仅在流结尾返回零 (0),否则在至少有 1 个字节可用之前应一直进行阻止。
  350. //
  351. // 异常:
  352. // T:System.ArgumentNullException:
  353. // asyncResult 为 null。
  354. //
  355. // T:System.ArgumentException:
  356. // 挂起的读操作的句柄将不可用。- 或 -挂起的操作不支持读取。
  357. //
  358. // T:System.InvalidOperationException:
  359. // asyncResult 不是源自 System.IO.Stream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
  360. // 上当前流的方法。
  361. //
  362. // T:System.IO.IOException:
  363. // 流已关闭或出现了内部错误。
  364. public virtual int EndRead(IAsyncResult asyncResult);
  365. //
  366. // 摘要:
  367. // 结束异步写操作。 (考虑使用 System.IO.Stream.WriteAsync(System.Byte[],System.Int32,System.Int32)
  368. // 进行替换;请参见“备注”部分。)
  369. //
  370. // 参数:
  371. // asyncResult:
  372. // 对未完成的异步 I/O 请求的引用。
  373. //
  374. // 异常:
  375. // T:System.ArgumentNullException:
  376. // asyncResult 为 null。
  377. //
  378. // T:System.ArgumentException:
  379. // 正在等待的写入操作的句柄将不可用。- 或 -挂起的操作不支持写入。
  380. //
  381. // T:System.InvalidOperationException:
  382. // asyncResult 不是源自 System.IO.Stream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
  383. // 上当前流的方法。
  384. //
  385. // T:System.IO.IOException:
  386. // 流已关闭或出现了内部错误。
  387. public virtual void EndWrite(IAsyncResult asyncResult);
  388. //
  389. // 摘要:
  390. // 当在派生类中重写时,将清除该流的所有缓冲区,并使得所有缓冲数据被写入到基础设备。
  391. //
  392. // 异常:
  393. // T:System.IO.IOException:
  394. // 出现 I/O 错误。
  395. public abstract void Flush();
  396. //
  397. // 摘要:
  398. // 异步清除此流的所有缓冲区并导致所有缓冲数据都写入基础设备中。
  399. //
  400. // 返回结果:
  401. // 表示异步刷新操作的任务。
  402. //
  403. // 异常:
  404. // T:System.ObjectDisposedException:
  405. // 已释放流。
  406. [ComVisible(false)]
  407. public Task FlushAsync();
  408. //
  409. // 摘要:
  410. // 异步清理这个流的所有缓冲区,并使所有缓冲数据写入基础设备,并且监控取消请求。
  411. //
  412. // 参数:
  413. // cancellationToken:
  414. // 要监视取消请求的标记。 默认值为 System.Threading.CancellationToken.None。
  415. //
  416. // 返回结果:
  417. // 表示异步刷新操作的任务。
  418. //
  419. // 异常:
  420. // T:System.ObjectDisposedException:
  421. // 已释放流。
  422. [ComVisible(false)]
  423. public virtual Task FlushAsync(CancellationToken cancellationToken);
  424. //
  425. // 摘要:
  426. // 当在派生类中重写时,从当前流读取字节序列,并将此流中的位置提升读取的字节数。
  427. //
  428. // 参数:
  429. // buffer:
  430. // 字节数组。 此方法返回时,该缓冲区包含指定的字符数组,该数组的 offset 和 (offset + count -1) 之间的值由从当前源中读取的字节替换。
  431. //
  432. // offset:
  433. // buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。
  434. //
  435. // count:
  436. // 要从当前流中最多读取的字节数。
  437. //
  438. // 返回结果:
  439. // 读入缓冲区中的总字节数。 如果很多字节当前不可用,则总字节数可能小于请求的字节数;如果已到达流结尾,则为零 (0)。
  440. //
  441. // 异常:
  442. // T:System.ArgumentException:
  443. // offset 和 count 的总和大于缓冲区长度。
  444. //
  445. // T:System.ArgumentNullException:
  446. // buffer 为 null。
  447. //
  448. // T:System.ArgumentOutOfRangeException:
  449. // offset 或 count 为负数。
  450. //
  451. // T:System.IO.IOException:
  452. // 出现 I/O 错误。
  453. //
  454. // T:System.NotSupportedException:
  455. // 流不支持读取。
  456. //
  457. // T:System.ObjectDisposedException:
  458. // 在流关闭后调用方法。
  459. public abstract int Read(byte[] buffer, int offset, int count);
  460. //
  461. // 摘要:
  462. // 从当前流异步读取字节的序列,将流中的位置提升读取的字节数,并监视取消请求。
  463. //
  464. // 参数:
  465. // buffer:
  466. // 数据写入的缓冲区。
  467. //
  468. // offset:
  469. // buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。
  470. //
  471. // count:
  472. // 最多读取的字节数。
  473. //
  474. // cancellationToken:
  475. // 要监视取消请求的标记。 默认值为 System.Threading.CancellationToken.None。
  476. //
  477. // 返回结果:
  478. // 表示异步读取操作的任务。TResult 参数的值包含读入缓冲区的总字节数。 如果当前可用字节数少于所请求的字节数,则该结果值可小于所请求的字节数;如果已到达流结尾时,则为
  479. // 0(零)。
  480. //
  481. // 异常:
  482. // T:System.ArgumentNullException:
  483. // buffer 为 null。
  484. //
  485. // T:System.ArgumentOutOfRangeException:
  486. // offset 或 count 为负数。
  487. //
  488. // T:System.ArgumentException:
  489. // offset 和 count 的总和大于缓冲区长度。
  490. //
  491. // T:System.NotSupportedException:
  492. // 流不支持读取。
  493. //
  494. // T:System.ObjectDisposedException:
  495. // 已释放流。
  496. //
  497. // T:System.InvalidOperationException:
  498. // 之前的读取操作当前正在使用流。
  499. [ComVisible(false)]
  500. public virtual Task<int> ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken);
  501. //
  502. // 摘要:
  503. // 从当前流异步读取字节序列,并将流中的位置提升读取的字节数。
  504. //
  505. // 参数:
  506. // buffer:
  507. // 数据写入的缓冲区。
  508. //
  509. // offset:
  510. // buffer 中的字节偏移量,从该偏移量开始写入从流中读取的数据。
  511. //
  512. // count:
  513. // 最多读取的字节数。
  514. //
  515. // 返回结果:
  516. // 表示异步读取操作的任务。TResult 参数的值包含读入缓冲区的总字节数。 如果当前可用字节数少于所请求的字节数,则该结果值可小于所请求的字节数;如果已到达流结尾时,则为
  517. // 0(零)。
  518. //
  519. // 异常:
  520. // T:System.ArgumentNullException:
  521. // buffer 为 null。
  522. //
  523. // T:System.ArgumentOutOfRangeException:
  524. // offset 或 count 为负数。
  525. //
  526. // T:System.ArgumentException:
  527. // offset 和 count 的总和大于缓冲区长度。
  528. //
  529. // T:System.NotSupportedException:
  530. // 流不支持读取。
  531. //
  532. // T:System.ObjectDisposedException:
  533. // 已释放流。
  534. //
  535. // T:System.InvalidOperationException:
  536. // 之前的读取操作当前正在使用流。
  537. [ComVisible(false)]
  538. public Task<int> ReadAsync(byte[] buffer, int offset, int count);
  539. //
  540. // 摘要:
  541. // 从流中读取一个字节,并将流内的位置向前提升一个字节,或者如果已到达流结尾,则返回 -1。
  542. //
  543. // 返回结果:
  544. // 强制转换为 Int32 的无符号字节,如果到达流的末尾,则为 -1。
  545. //
  546. // 异常:
  547. // T:System.NotSupportedException:
  548. // 流不支持读取。
  549. //
  550. // T:System.ObjectDisposedException:
  551. // 在流关闭后调用方法。
  552. [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
  553. public virtual int ReadByte();
  554. //
  555. // 摘要:
  556. // 当在派生类中重写时,设置当前流中的位置。
  557. //
  558. // 参数:
  559. // offset:
  560. // 相对于 origin 参数的字节偏移量。
  561. //
  562. // origin:
  563. // System.IO.SeekOrigin 类型的值,指示用于获取新位置的参考点。
  564. //
  565. // 返回结果:
  566. // 当前流中的新位置。
  567. //
  568. // 异常:
  569. // T:System.IO.IOException:
  570. // 出现 I/O 错误。
  571. //
  572. // T:System.NotSupportedException:
  573. // 流不支持查找,例如在流构造从管道或控制台输出的情况下即为如此。
  574. //
  575. // T:System.ObjectDisposedException:
  576. // 在流关闭后调用方法。
  577. public abstract long Seek(long offset, SeekOrigin origin);
  578. //
  579. // 摘要:
  580. // 当在派生类中重写时,设置当前流的长度。
  581. //
  582. // 参数:
  583. // value:
  584. // 所需的当前流的长度(以字节表示)。
  585. //
  586. // 异常:
  587. // T:System.IO.IOException:
  588. // 出现 I/O 错误。
  589. //
  590. // T:System.NotSupportedException:
  591. // 流不支持写入和查找,例如在流构造从管道或控制台输出的情况下即为如此。
  592. //
  593. // T:System.ObjectDisposedException:
  594. // 在流关闭后调用方法。
  595. public abstract void SetLength(long value);
  596. //
  597. // 摘要:
  598. // 当在派生类中重写时,向当前流中写入字节序列,并将此流中的当前位置提升写入的字节数。
  599. //
  600. // 参数:
  601. // buffer:
  602. // 字节数组。 此方法将 count 个字节从 buffer 复制到当前流。
  603. //
  604. // offset:
  605. // buffer 中的从零开始的字节偏移量,从此处开始将字节复制到当前流。
  606. //
  607. // count:
  608. // 要写入当前流的字节数。
  609. //
  610. // 异常:
  611. // T:System.ArgumentException:
  612. // 总和 offset 和 count 大于缓冲区长度。
  613. //
  614. // T:System.ArgumentNullException:
  615. // buffer 是 null。
  616. //
  617. // T:System.ArgumentOutOfRangeException:
  618. // offset 或 count 为负。
  619. //
  620. // T:System.IO.IOException:
  621. // 将出现 I/O 错误,如找不到指定的文件。
  622. //
  623. // T:System.NotSupportedException:
  624. // 流不支持写入。
  625. //
  626. // T:System.ObjectDisposedException:
  627. // System.IO.Stream.Write(System.Byte[],System.Int32,System.Int32) 是关闭了流之后调用。
  628. public abstract void Write(byte[] buffer, int offset, int count);
  629. //
  630. // 摘要:
  631. // 将字节的序列异步写入当前流,将该流中的当前位置向前移动写入的字节数,并监视取消请求。
  632. //
  633. // 参数:
  634. // buffer:
  635. // 从中写入数据的缓冲区。
  636. //
  637. // offset:
  638. // buffer 中的从零开始的字节偏移量,从此处开始将字节复制到该流。
  639. //
  640. // count:
  641. // 最多写入的字节数。
  642. //
  643. // cancellationToken:
  644. // 要监视取消请求的标记。 默认值为 System.Threading.CancellationToken.None。
  645. //
  646. // 返回结果:
  647. // 表示异步写入操作的任务。
  648. //
  649. // 异常:
  650. // T:System.ArgumentNullException:
  651. // buffer 为 null。
  652. //
  653. // T:System.ArgumentOutOfRangeException:
  654. // offset 或 count 为负数。
  655. //
  656. // T:System.ArgumentException:
  657. // offset 和 count 的总和大于缓冲区长度。
  658. //
  659. // T:System.NotSupportedException:
  660. // 流不支持写入。
  661. //
  662. // T:System.ObjectDisposedException:
  663. // 已释放流。
  664. //
  665. // T:System.InvalidOperationException:
  666. // 流正在由前一次写操作使用。
  667. [ComVisible(false)]
  668. public virtual Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken);
  669. //
  670. // 摘要:
  671. // 将字节序列异步写入当前流,并将流的当前位置提升写入的字节数。
  672. //
  673. // 参数:
  674. // buffer:
  675. // 从中写入数据的缓冲区。
  676. //
  677. // offset:
  678. // buffer 中的从零开始的字节偏移量,从此处开始将字节复制到该流。
  679. //
  680. // count:
  681. // 最多写入的字节数。
  682. //
  683. // 返回结果:
  684. // 表示异步写入操作的任务。
  685. //
  686. // 异常:
  687. // T:System.ArgumentNullException:
  688. // buffer 为 null。
  689. //
  690. // T:System.ArgumentOutOfRangeException:
  691. // offset 或 count 为负数。
  692. //
  693. // T:System.ArgumentException:
  694. // offset 和 count 的总和大于缓冲区长度。
  695. //
  696. // T:System.NotSupportedException:
  697. // 流不支持写入。
  698. //
  699. // T:System.ObjectDisposedException:
  700. // 已释放流。
  701. //
  702. // T:System.InvalidOperationException:
  703. // 流正在由前一次写操作使用。
  704. [ComVisible(false)]
  705. public Task WriteAsync(byte[] buffer, int offset, int count);
  706. //
  707. // 摘要:
  708. // 将一个字节写入流内的当前位置,并将流内的位置向前提升一个字节。
  709. //
  710. // 参数:
  711. // value:
  712. // 要写入流中的字节。
  713. //
  714. // 异常:
  715. // T:System.IO.IOException:
  716. // 出现 I/O 错误。
  717. //
  718. // T:System.NotSupportedException:
  719. // 流不支持写入,或该流已关闭。
  720. //
  721. // T:System.ObjectDisposedException:
  722. // 在流关闭后调用方法。
  723. public virtual void WriteByte(byte value);
  724. //
  725. // 摘要:
  726. // 分配 System.Threading.WaitHandle 对象。
  727. //
  728. // 返回结果:
  729. // 对已分配的 WaitHandle 的引用。
  730. [Obsolete("CreateWaitHandle will be removed eventually. Please use \"new ManualResetEvent(false)\" instead.")]
  731. protected virtual WaitHandle CreateWaitHandle();
  732. //
  733. // 摘要:
  734. // 释放由 System.IO.Stream 占用的非托管资源,还可以另外再释放托管资源。
  735. //
  736. // 参数:
  737. // disposing:
  738. // 若要释放托管资源和非托管资源,则为 true;若仅释放非托管资源,则为 false。
  739. protected virtual void Dispose(bool disposing);
  740. //
  741. // 摘要:
  742. // 提供对 System.Diagnostics.Contracts.Contract 的支持。
  743. [Obsolete("Do not call or override this method.")]
  744. protected virtual void ObjectInvariant();
  745. }
  746. }
2、
2.返回顶部
 
3.返回顶部
 
4.返回顶部
 
5.返回顶部
 
 
6.返回顶部
 
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

.NETFramework:Stream的更多相关文章

  1. Java 8 vs. Scala(二):Stream vs. Collection

    [编者按]在之前文章中,我们介绍了 Java 8和Scala的Lambda表达式对比.在本文,将进行 Hussachai Puripunpinyo Java 和 Scala 对比三部曲的第二部分,主要 ...

  2. C# 温故而知新:Stream篇(—)

    C# 温故而知新:Stream篇(—) 目录: 什么是Stream? 什么是字节序列? Stream的构造函数 Stream的重要属性及方法 Stream的示例 Stream异步读写 Stream 和 ...

  3. Akka(25): Stream:对接外部系统-Integration

    在现实应用中akka-stream往往需要集成其它的外部系统形成完整的应用.这些外部系统可能是akka系列系统或者其它类型的系统.所以,akka-stream必须提供一些函数和方法来实现与各种不同类型 ...

  4. FunDA(4)- 数据流内容控制:Stream data element control

    上节我们探讨了通过scalaz-stream-fs2来驱动一套数据处理流程,用fs2的Pipe类型来实现对数据流的逐行操作.本篇讨论准备在上节讨论的基础上对数据流的流动和元素操作进行优化完善.如数据流 ...

  5. Java8初体验(2):Stream语法详解

    原文出处: 一冰_天锦 上篇文章Java8初体验(1):lambda表达式语法比较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例子中有很多Stream的例子.这些Stream的 ...

  6. Java提升四:Stream流

    1.Stream流的定义 Stream是Java中的一个接口.它的作用类似于迭代器,但其功能比迭代器强大,主要用于对数组和集合的操作. Stream中的流式思想:每一步只操作,不存储. 2.Strea ...

  7. 恕我直言你可能真的不会java第6篇:Stream性能差?不要人云亦云

    一.粉丝的反馈 问:stream比for循环慢5倍,用这个是为了啥? 答:互联网是一个新闻泛滥的时代,三人成虎,以假乱真的事情时候发生.作为一个技术开发者,要自己去动手去做,不要人云亦云. 的确,这位 ...

  8. Java 8新特性(二):Stream API

    本篇文章继续介绍Java 8的另一个新特性--Stream API.新增的Stream API与InputStream和OutputStream是完全不同的概念,Stream API是对Java中集合 ...

  9. .NETFramework:WebClient

    ylbtech-.NETFramework:WebClient 1.程序集 System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5 ...

随机推荐

  1. luogu P2912 [USACO08OCT]牧场散步Pasture Walking

    题目描述 The N cows (2 <= N <= 1,000) conveniently numbered 1..N are grazing among the N pastures ...

  2. [置顶] 内存管理一点也不神秘————手绘iOS内存管理细节

    今天给大家带来的一篇手绘风格博文<内存管理一点也不神秘> 每当我们程序执行alloc/new/copy/mutableCopy的时候,当我们执行release的时候,当我们执行retain ...

  3. 【gradle】mac下 gradle默认本地仓库位置

    gradle默认会把包缓存到用户目录的.gradle目录下,如果你打开.gradle\caches\modules-2\files-2.1,你会发现很多的jar包.mac上的话 ,也就是在/Users ...

  4. 同一页面引入多个JS文件的编码问题

    原来只是觉得IE解析HTML文件的时候,需要知道其传输编码,才能正确处理,而从来没有在意过JavaScript文件的编码问题.结果今天发现同一页面中的多个JavaScript文件如果保存编码不同,也会 ...

  5. 聊聊WiFi Hacks:为何你的Karma攻击不好使了

    0.前言 三年前我发表了一篇文章<黑客有办法让你自动连上陌生WiFi>,介绍Karma攻击可以让你的无线设备自动连上黑客的WiFi.当时引起了还算比较热烈的讨论,关于WiFi安全,关于Ka ...

  6. BUPT复试专题—统计字母(2008)

    题目描述 给定一个只有小写英文字母组成的字符串,串长为n.请你编写程序求出这个字符串中出现次数最多的字母. 输入 输入的第一行为t(0 < t < 10),表示有t组测试用例.对于每组测试 ...

  7. SQL存储过程实例详解

    本文用3个题目,从建立数据库到创建存储过程,详细讲解数据库的功能. 题目1         学校图书馆借书信息管理系统建立三个表:         学生信息表:student 字段名称 数据类型 说明 ...

  8. 几种自己主动运行js代码的方式

    近期在看jquery,发现他竟然能自己主动运行js代码,于是就查了下.收集了几种经常使用的实现方法 jquery的方法 使用场景:不论什么须要运行的js特效 $(document).ready(fun ...

  9. ZOJ 3230 Solving the Problems(数学 优先队列啊)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3230 Programming is fun, Aaron is ...

  10. python day - 19 抽象类 接口类 多态 封装

    一. 抽象类接口类即制定一个规范 特点: 1.不可被实例化. 2.规范子类当中必须事先某个方法. 3.在python中有原生实现抽象类的方法,但没有原生实现接口类的方法. 例题:制定一个规范就是,子类 ...