100165771.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 333 行 · 第 1/2 页

HTM
333
字号
    <td>
    <div style='padding:3.6pt 7.2pt 3.6pt 7.2pt'>
    <p class=MsoNormal style='FTEL:0cm;line-height:12.0pt'><span
    style='font-size:7.5pt;font-family:宋体'>数据源</span></p>
    
    </div>
    </td>
   </tr>
  </table>
  </span>&nbsp;</td>
 </tr>
</table>

</span><span style='position:absolute;z-index:5;left:0px;margin-left:433px;
margin-top:33px;width:92px;height:34px'>

<table cellpadding=0 cellspacing=0>
 <tr>
  <td width=92 height=34 style='vertical-align:top'><span style='position:absolute;
  left:0pt;z-index:5'>
  <table cellpadding=0 cellspacing=0 width="100%">
   <tr>
    <td>
    <div style='padding:3.6pt 7.2pt 3.6pt 7.2pt'>
    <p class=MsoNormal style='FTEL:0cm'><span lang=EN-US
    style='font-size:7.5pt'>(</span><span style='font-size:7.5pt;font-family:
    宋体'>文件,网络等</span><span lang=EN-US style='font-size:7.5pt'>)</span></p>
    
    </div>
    </td>
   </tr>
  </table>
  </span>&nbsp;</td>
 </tr>
</table>

</span><span style='position:absolute;z-index:4;left:0px;margin-left:317px;
margin-top:24px;width:89px;height:43px'>

<table cellpadding=0 cellspacing=0>
 <tr>
  <td width=89 height=43 style='vertical-align:top'><span style='position:absolute;
  left:0pt;z-index:4'>
  <table cellpadding=0 cellspacing=0 width="100%">
   <tr>
    <td>
    <div style='padding:3.6pt 7.2pt 3.6pt 7.2pt'>
    <p class=MsoNormal style='FTEL:0cm'><span style='font-size:7.5pt;
    font-family:宋体'>底层流对象</span></p>
    
    </div>
    </td>
   </tr>
  </table>
  </span>&nbsp;</td>
 </tr>
</table>

</span><span style='position:absolute;z-index:2;left:0px;margin-left:172px;
margin-top:4px;width:105px;height:41px'>

<table cellpadding=0 cellspacing=0>
 <tr>
  <td width=105 height=41 style='vertical-align:top'><span style='position:
  absolute;left:0pt;z-index:2'>
  <table cellpadding=0 cellspacing=0 width="100%">
   <tr>
    <td>
    <div style='padding:3.6pt 7.2pt 3.6pt 7.2pt'>
    <p class=MsoNormal style='FTEL:0cm;line-height:12.0pt'><span
    lang=EN-US style='font-size:7.5pt'>BinaryReader</span></p>
    </div>
    </td>
   </tr>
  </table>
  </span>&nbsp;</td>
 </tr>
</table>

</span><span style='position:absolute;z-index:6;left:0px;margin-left:80px;
margin-top:23px;width:77px;height:34px'>

<table cellpadding=0 cellspacing=0>
 <tr>
  <td width=77 height=34 style='vertical-align:top'><span style='position:absolute;
  left:0pt;z-index:6'>
  <table cellpadding=0 cellspacing=0 width="100%">
   <tr>
    <td>
    <div style='padding:3.6pt 7.2pt 3.6pt 7.2pt'>
    <p class=MsoNormal style='FTEL:0cm'><span style='font-size:7.5pt;
    font-family:宋体'>代码</span></p>
    
    
    </div>
    </td>
   </tr>
  </table>
  </span>&nbsp;</td>
 </tr>
</table>

</span><span lang=EN-US><img width=452 height=81 src="30/image008.jpg"></span></p>

<p align=center style='FTEL:8.15pt'><span style='font-family:宋体'>图</span><span
lang=EN-US>&nbsp; 30-7</span></p>

<p class=MsoNormal style='line-height:17.0pt'><span style='font-family:宋体'>使用这些类和直接使用底层的流对象之间的区别是基本流是按照字节来工作的。例如,要保存某个文档,需要把类型为</span><span
lang=EN-US>long</span><span style='font-family:宋体'>的变量内容写入到一个二进制文件中,每个</span><span
lang=EN-US>long</span><span style='font-family:宋体'>都占用</span><span lang=EN-US>8</span><span
style='font-family:宋体'>个字节,如果使用一般的二进制流,就必须显式地把写入内存的</span><span lang=EN-US>8</span><span
style='font-family:宋体'>个字节。在</span><span lang=EN-US>C#</span><span
style='font-family:宋体'>代码中,必须显式执行一些按位操作,从</span><span lang=EN-US>long</span><span
style='font-family:宋体'>值中提取这</span><span lang=EN-US>8</span><span
style='font-family:宋体'>个字节。使用</span><span lang=EN-US>BinaryWriter</span><span
style='font-family:宋体'>实例,可以把整个操作封装在</span><span lang=EN-US>BinaryWriter.Write()</span><span
style='font-family:宋体'>方法的一个重载方法中,该方法的参数是</span><span lang=EN-US>long</span><span
style='font-family:宋体'>型,它把</span><span lang=EN-US>8</span><span
style='font-family:宋体'>个字节写入流中</span><span lang=EN-US>(</span><span
style='font-family:宋体'>如果流指向一个文件,就写入该文件</span><span lang=EN-US>)</span><span
style='font-family:宋体'>。对应的</span><span lang=EN-US>BinaryReader.Read()</span><span
style='font-family:宋体'>方法则从流中提取</span><span lang=EN-US>8</span><span
style='font-family:宋体'>个字节,恢复</span><span lang=EN-US>long</span><span
style='font-family:宋体'>的值。</span></p>

<p class=MsoNormal style='line-height:17.0pt'><span style='font-family:宋体'>如果要使用</span><span
lang=EN-US>BinaryReader </span><span style='font-family:宋体'>和</span> <span lang=EN-US>BinaryWriter</span><span style='font-family:宋体'>类,可以参阅</span><span
lang=EN-US>SDK</span><span style='font-family:宋体'>文档说明书,了解操作的</span><span
lang=EN-US>&nbsp;&nbsp;&nbsp; </span><span style='font-family:宋体'>细节。</span></p>

<p class=a3 style='margin-top:8.15pt;FTEL:21.45pt'><span
style='font-family:黑体'>缓冲的流</span></p>

<p class=MsoNormal style='line-height:17.0pt'><a FTEL=BufferedStream1><span
style='font-family:宋体'>从性能上看,在读写文件时,输出结果会被缓冲。如果程序要求读取文件流中下面的</span><span
lang=EN-US>2</span></a><span style='font-family:宋体'>个字节,该流会把请求传送给</span><span
lang=EN-US>Windows</span><span style='font-family:宋体'>,</span><span lang=EN-US>Windows</span><span
style='font-family:宋体'>不会连接文件系统,再定位文件,并从磁盘中读取文件,仅读取</span><span lang=EN-US>2</span><span
style='font-family:宋体'>个字节,而是在一次读取过程中,获取文件中的一个大块,把该块保存在一个内存区域即缓冲区上。以后对流中数据的请求就会从该缓冲区中读取,直到读取完该缓冲区为止。此时,</span><span
lang=EN-US>Windows</span><span style='font-family:宋体'>会从文件中再获取另一个数据块。写入文件的方式与此相同。对于文件,操作系统会自动完成读写操作,但需要编写一个流类,从其他没有保存到缓冲区的设备中读取数据。如果是这样,就应从</span><span
lang=EN-US>BufferedStream</span><span style='font-family:宋体'>派生一个类,以执行缓冲操作</span><span
lang=EN-US>(</span><span style='font-family:宋体'>但</span><span lang=EN-US>BufferedStream</span><span
style='font-family:宋体'>不执行缓冲操作,它是专门为程序频繁切换读数据和写数据而设计的</span><span lang=EN-US>)</span><span
style='font-family:宋体'>。</span></p>

</div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165770.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165772.htm">下一页</a>
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165771.htm'><font color='red'>30.3.1  流</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165768.htm'>30.1.3  示例:文件浏览器</a></div><div style='float:right;width:49%'>·<a href='100165769.htm'>30.2  移动、复制和删除文件</a></div><div style='float:left;width:49%'>·<a href='100165770.htm'>30.3  读写文件</a></div><div style='float:right;width:49%'>·<a href='100165772.htm'>30.3.2  读写二进制文件</a></div><div style='float:left;width:49%'>·<a href='100165773.htm'>30.3.3  读写文本文件</a></div><div style='float:right;width:49%'>·<a href='100165774.htm'>30.4  读写注册表</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?