zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    awk用法
    cut用法
    优化Linux下的内核TCP参数以提高系统性能
    android开发_LayerlistDrawable(层叠图片)在进度条中的应用
    android开发_文本按钮 与 输入框
    android开发_ViewGroup(组视图)-- 五大布局
    android开发_view和view属性
    android开发_Eclipse新建项目+新建模拟器
    String,StringBuilder,tringBuffer
    zeros()和ones()和eye()
  • 原文地址:https://www.cnblogs.com/ongoing/p/2786311.html
Copyright © 2011-2022 走看看