(C#)学习笔记1:文件和注册表操作

相关概念:

     串行化是把一些数据(例如文档的内容)转换为字节流并存储在某个地方的过程。

     流:用于数据传输的对象,数据的传输有两个方向:

           读取流:数据从外部源传输到程序中。

           写入流:数据从程序中传输到外部源。

           外部源常常是一个文件,但是也不完全都是文件,也有可能是:

                  使用一些网络协议读写网络上的数据,其目的是选择数据,或从另一个计算机上发送数据。

                  读写到指定的管道上。

                  把数据写到一个相应的内存区域上。

应该注意的问题:

    1.DirectoryInfo类的构造函数:如:DirectoryInfo di=new Directory(@"c:windows")

    如果路径表示一个不存在的对象,在构造时不会出现异常,但如果是第一次调用某些方法,但是该方法需要一个对应的文件系统对象,就会抛出一个异常。

   2.通过FileInfo的DirectoryName属性可以返回父文件夹的路径。

   3.File类的方法:ReadAllBytes()可以打开二进制文件,把其内容读入一个字节数组,ReadAllText()方法会在一个字符串的数组中提供指定文件的内容。

   4。从性能上看,在读写文件时,输出结果会被缓存。如果程序要求读取文件流中下面的2个字节,该流会把请求传送给Windows,Windows不会连接文件系统,再定位文件,并从文件中读取2个字节,而是在一次读取的过程中,获取文件中的一个大块,把该块保存在内存区域中及缓冲区中。以后对流中数据的请求都会从该缓存区中获取,直到读完该缓冲区为止。此时,Window会从文件中再获取另一个数据块。写入文件 的方式于此相同,操作系统自动完成读写操作,但需要编写相关的流类,从其他没有保存到缓冲区的设备中读取数据。如果是这样,就应从BufferStream派生一个类,以执行缓冲操作(但BufferStream不执行缓冲操作,它是专门为程序频繁切换读数据和写数据而设计的。)

   5.FileStream类的方法:ReadByte()是读取数据最简单的方式,它从流中读取一个字节,把结果转换为一个0到255之间的一个整数。如果到达该流中的末尾,则返回-1。

   6。理论上FileStream类可以读取和显示文本。但是如果是用该类操作相应的文本文件,则不太容易理解。

        如果知道某个文件包含文本,通常就可以用StreamReader和StreamWriter类更方便的读写,而不是FileStream。这是因为这些类的级别  比较高,特别适合于读写文本,他们执行的方法可以根据流的内容,自动检测出停止读取文本比较方便的位置,特别是:

       这些类执行的方法(StreamReader.ReadLine()和StreamWriter.WriteLine())可以读写一行文本,在读写文件时,流会自动确定下一个回车符的位置,并在该处停止读取。在写入文件时,流会自动把回车符和换行符添加到文本的末尾。

       使用StreamReader和StreamWriter类,就不需要担心文件中使用的编码方式了,可能的编码方式是ASCII或者基于Unicode的格式。UNICODE、UTF7、UTF8和UTF32。WIndows9X系统上文件文件总是ASCII格式,因为Windows9X不支持Unicode,但Windows NT、2000、XP、2003、Vista和Windows 2008都支持Unicode,所以文本文件除了ASCII数据外,理论上可以包含Unicode、UTF7、UTF8、UTF32数据。其约定是:如果文件是ASCII时,就只包含文本,如果是Unicode格式,就用文件的前两个或前三个字节来表示,这几个字节可以设置为表示文件 格式中的值的特定组合(称为字节码标记)。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值