.NET ,访问操作文件系统

流是序列化设备的抽象表示,序列化设备可以线性方式存储数据,并按同样方式访问。把设备变成抽象的,就可以隐藏流的底层目标和源,这种抽象级别支持代码重用,允许编写更通用的例程,不必担心数据传输方式的特性。

 

System.io中的类:

File 静态实用类,提供许多静态方法,用于移动,复制和删除文件

Directory 静态实用类,提供许多静态方法,用于移动,复制和删除目录

Path 实用类,用于处理路径名称

FileInfo 表示磁盘上的物理文件,该类包含处理此文件的方法,要完成对文件的读写工作,就必须创建stream对象

DirectoryInfo 表示磁盘上的物理目录,该类包含处理此目录的方法

FileStreamInfo 用作fileinfo和directoryinfo的基类,可以使用多态性同时处理文件和目录

FileStream 表示可写或可读,或二者均可的文件,此文件可以同步或异步的读写

StreamReader 从流中读取字符数据,可以使用filestream将其创建为基类

StreamWriter 向流写入字符数据,可以使用filestream将其创建为基类

FileSystemWatcher 用于监控文件和目录,提供了这些文件和目录发生变化时应用程序可以捕获的事件。

 

System.IO.Compression名称空间中提供压缩模式读写压缩文件:

DeflateStream 或者GZipStream表示在写入时自动压缩数据或在读取时自动解压缩的流

 

System.Runtime.Serialization名称空间及其子名称空间进行对象序列化,比如system.Runtime.Serialization.Formatters.Binary名称空间中的binaryFormatter类

 

 

Directory类中提供了一些enumerateXXX方法是.NET4新增的

 

如果进行单一调用,就使用静态类,如果进行一系列调用,则使用实例化的对象

 

使用filestream创建的流对象可以进行精确设置,比如操作和访问权限,该对象是按字节访问,可以实现随机访问,使用seek方法,访问起始点有三个(begin,current,end)

 

.NET4引用了一个新名称空间 system.IO.MemoryMappedFiles,它包含的类型(例如 memoryMappedFile)提供了另一种随机访问特大型文件的方式

 

使用system.text名称空间中的decoder类将原始字节转换为有用的项,比如字符:

Decoder d=encoding.utf8.getdecoder();

d.getchars();

 

将字符转换为字节可以用encoder类,类似的方法

 

使用readline方法一次读一行,也可以使用静态类的方法来读取,避免占用readtoend过多内存

 

system.Runtime.Serialization.Formatters.Binary名称空间中的binaryFormatter类和system.Runtime.Serialization.Formatters.soap名称空间中的soapFormatter类都实现了Iformatter接口,前者用于对象和二进制数据之间的序列化,后者用于对象和xml之间的序列化。

另外两个实现IFormatter接口的是objectStateFormatter(用于ASP.NET中序列化viewState),另一个是NetDateContractSerializer,用于序列化WCF数据合同

 

要把对象标记为可序列化才能序列化它们,因为一些对象的序列化效果不好,或包含敏感数据

成员还可以标记为不可序列化的特性

ISserializable接口用来定制序列化

 

Filesystemwatcher的使用很简单,首先设置一些属性,指定监控的位置,内容以及引发程序要处理的事件的时间,然后提供定制事件处理程序的地址,当发生重要事件时,filesystemwatcher就可以进行调用,最后打开filesystemwatcher,等待事件。

必须设置的属性为:

Path 要监控的文件的位置或目录

NotifyFilter 这是枚举值的组合,表示要监控的文件的属性,如果这些属性发生了变化,就引发事件

Filter 指定要监控哪些文件的过滤器,例如,*.txt

然后为事件编写处理程序,最后将enableRaisingEvents属性设置为true

 

 

posted on 2012-11-24 20:44  雷音  阅读(262)  评论(0编辑  收藏  举报

导航