文件系统数据(一)——Directory、File//20131031

来源:互联网 发布:免费x战最新域名 编辑:程序博客网 时间:2024/06/05 23:52

一、流
    在.NET Framework 中进行的所有输入和输出工作都要用到流。流是序列化设备的抽象表示。
1、输出流:
    当向某些外部目标写入数据时,就要用到输出流。
2、输出流:
    用于将数据读到程序可以访问的内存或变量中。

 

二、用于输入和输出的类
    System.IO包含用于在文件中读写数据的类。
1、File:静态实用类,提供许多静态方法,用于移动、复制和删除文件
2、Directory:静态实用类,提供许多静态方法,用于移动、复制和删除目录
3、Path:实用类,用于处理路径名称
4、FileInfo:表示磁盘上的物理文件,该类包含处理此文件的方法。要完成对文件的读写工作,就必须创建Stream对象
5、DirectoryInfo:表示磁盘上的物理目录,该类包含处理此目录的方法
6、FileStreamInfo:用作FileInfo和DirectoryInfo的基类,可以使用多态性同时处理文件和目录
7、FileStream:表示可写或可读,或二者均可的文件。此文件可以同步或异步地读写
8、StreamReader:从流中读取字符数据,可以使用FileStream将其创建为基类
9、StreamWriter:向流写入字符数据,可以使用FileStream将其创建为基类
10、FileSystemWatcher:用于监控文件和目录提供了这些文件和目录发生变化时应用程序可以捕获的事件

    System.IO.Compression,允许使用GZIP压缩或Deflate压缩模式读写压缩文件:
1、DeflateStream:表示在写入时自动压缩数据或在读取时自动解压缩的流,压缩使用Deflate算法来实现。
2、GZipStream:表示在写入时自动压缩数据或在读取时自动解压缩的流,压缩使用GZIP算法来实现。

    System.Runtime.Serialization.Formatters.Binary允许把对象序列化为二进制数据流,并可以解序这些数据。

 

三、File类和Directory类

(一)Directory类提供了文件夹操作的方法,Directory类内的方法是静态的,无须创建对象即可使用。


Directory类常用方法包括:
(1)CreateDirectory  创建文件夹
(2)Move  移动文件夹
(3)Delete  删除文件夹
(4)GetFiles  返回指定目录中的文件的名称
(5)GetFileSystemEntries  返回指定目录中所有文件和子目录的名称 (返回在当前目录中的文件和目录名的string对象数组)
(6)GetCreationTime   返回创建目录的日期和时间 
(7)GetCurrentDirectory  返回应用程序的当前工作目录
(8)GetDirectories  返回指定目录中所有子目录的名称(返回表示当前目录下的目录名的string对象数组)
(9)GetFiles  返回指定目录中所有文件的名称 (返回表示当前目录中的文件名的string对象数组)
(10)GetLogicalDrives  返回所有逻辑驱动器名称
(11)GetParent  返回指定目录的父目录
(12)SetCreationTime  设置创建目录的日期和时间
(13)SetCurrentDirectory  设置应用程序的当前工作目录 

 

(二)      File类提供了文件操作的方法,并协助创建FileStream对象,和Directory类一样,File类的方法是静态的,无须创建对象即可使用。


常用方法:

(1)Create  创建文件
注:使用File.Create创建再复制/移动/删除时会提示:文件正由另一进程使用,因此该进程无法访问该文件
    改用 FileStream 获取 File.Create 返回的 System.IO.FileStream 再进行关闭就无此问题
(2)Copy  复制文件
(3)Move  移动文件
(4)Delete  删除文件
(5)Exists  确定指定的文件是否存在
(6)AppendAllText  将指定的字符串追加到文件中,如果文件不存在则创建该文件
(7)Exists  判断指定文件是否存在
(8)GetAttributes  返回指定文件的文件属性对象
(9)GetCreationTime  返回创建指定文件的日期和时间
(10)GetLastAccessTime  返回访问指定文件的日期和时间
(11)GetLastWriteTime  返回写入指定文件的日期和时间
(12)Open  打开指定路径上的FileStream
(13)OpenRead  打开指定文件以进行读取
(14)OpenWrite  打开指定文件以进行写入
(15)ReadAllBytes  打开一个文件,将文件的内容读入一个字节数组,然后关闭该文件
(16)ReadAllLines  打开一个文件,将文件的内容读入一个字符串数组,然后关闭该文件
(17)ReadAllText  打开一个文件,将文件的内容读入一个字符串,然后关闭该文件
(18)Replace  使用其他文件的内容替换指定文件的内容,删除原始文件,并创建被替换文件的备份

注:操作一个资源 : 数据库,文件等 的流程一般都是 连接,操作,关闭

 

四、FileInfo类
    它不像File类,它不是静态的,没有静态方法,仅可用于实例化的对象。FileInfo对象表示磁盘或网络位置上的文件。提供文件的路径,就可以创建一个FileInfo对象:FileInfo aFile=new FileInfo(@"C:\Log.txt");
    FileInfo专用属性:
1、Directory:检索一个DirectoryInfo对象,表示包含当前文件的目录。这个属性是只读的
2、DirectoryName:返回文件目录的路径。这个属性是只读的
3、IsReadOnly:文件只读属性的快捷方式。这个属性也可以通过Attributes来访问
4、Length:获取文件的容量,以字节为单位,返回long值。这个属性是只读的

注:(1)如果仅进行单一方法调用,则可以使用静态File类上的方法。在此,单一调用要快一些,因为.NET Framework不必实例化新对象,再调用方法。
        (2)如果应用程序在文件上执行几种操作,则实例化FileInfo对象并使用其方法就更好一些。这会节省时间,因为对象已在文件系统上引用正确的文件,而静态类必须每次都寻找文件。
        (3)FileInfo对象本身不表示流。要读写文件,必须创建Stream对象。FileInfo对象为读写文件提供了几个返回实例化Stream对象的方法。

 

五、DirectoryInfo类
    DirectoryInfo类的作用类似于FileInfo类。它是一个实例化的对象,表示计算机上的单一目录。
注:1、如果进行单一调用,就使用静态Directory类。
    2、如果进行一系列调用,则使用实例化的DirectoryInfo对象。
    DirectoryInfo类的大多数属性继承自FileSystemInfo,与FileInfo类一样,但这些属性作用于目录上,而不是文件上。还有两个专用于DirectoryInfo的属性:
1、Parent:检索一个DirectoryInfo对象,表示包含当前目录的目录。这个属性是只读的
2、Root:检索一个DirectoryInfo对象,表示包含当前目录的根目录,例如C:\目录。这个属性是只读的

 

六、路径名和相对路径
1、绝对路径名:显式地规定文件或目录来自于哪一个已知的位置,比如C:驱动器。它的一个示例是C:\Work\LogFile.txt
2、相对路径名:相对于一个起始位置。前面的当前工作目录就是起始点,这是相对路径名的默认设置。例如,如果应用程序运行在C:\Development\FileDemo目录上,并使用了相对路径LogFile.txt,该文件就是C:\Development\FileDemo\LogFile.txt。为了上移目录,要使用..字符串。这样,在同一个应用程序中,路径..\Log.txt表示C:\Development\Log.txt文件。
注:只要需要,就可以使用Directory.GetCurrentDirectory()找出工作目录的当前设置,也可以使用Directory.SetCurrentDirectory()设置新路径。