01、各种关于文件或流的输入输出操作,都需要导入System.IO命名空间。
02、File类提供的方法都是静态的,所以不需要实例化就可以直接使用,简化了了程序操作步骤。
03、File类提供的常用方法有:
AppendText | 创建一个StreamWriter对象,用于在指定文件的末尾添加新的内容,如果指定文件不存在,则自动创建这个文件。 |
|
Copy | 拷贝指定文件。 | Copy方法必须带两个参数,第一个参数为源文件所在的路径;第二个参数为目标文件所在的心路径。还可以再带一个Bool类型的可选参数,如果其值为True,表示如果目标文件已经存在,那么新文件可以覆盖原来的文件。 |
Move | 移动指定文件到新的路径。 | 与Copy方法基本一样,但是没有那个Bool型参数。而且重命名也可以通过这个方法实现,只要文件名不同就可以了。意义为先把源文件拷贝到新路径中,然后删除源文件。 |
Delete | 删除指定文件。 | 带一个参数。 |
Exists | 判断指定的文件是否存在。 |
|
Open | 以指定的方式、权限打开指定文件。 |
|
OpenRead | 以只读的方式打开指定文件。 |
|
OpenText | 创建一个StreamReader对象,用于读取指定文本文件的内容。 | 这个方法只有一个字符串类型参数,就是需要指定需要读取的文本文件的绝对路径。如果是相对路径,就需要使用Server.MapPath()方法来取得当前目录的绝对路径。它的返回值是一个StreamReader类,接下来的操作就可以利用StreamReader类的操作放来来完成对文本文件的读写。通过SteamReader对象的ReadLine方法,程序就能读取SteamReader中的每一行数据。 |
OpenWrite | 以读写的方式打开指定文件。 |
|
Create | 创建一个指定文件。 |
|
CreateText | 创建一个文本文件。 | StreamWriter类的作用便是实现文件写的操作。StreamWriter类有两个写入方法:一个是WriteLine;另一个是Write,二者的区别是前者是每行每行的写入,后者是不按行写入(即每行文本后加有“/n”换行符)。接着使用Flush方法将缓冲区中的数据内容,真正的写入文件中,并用Close()方法关闭StreamWrite对象。为了防止写入文本文件的内容是乱码可以使用System.Text.Encoding.GetEncoding("GB2312")来指定写入内容的编码格式。 |
04、在Windows系统中如果输入输出的数据小于64KB,则采用同步模式可以获得比较好的效果,使用的方法是Read和Write方法;而当输入输出的数据大于64KB时,则采用异步模式,使用的是BeginRead和BeginWrite方法。
05、FileStream有很多种建立方式,最常见的方式是:
FileStream fs = new FileStream(string OpenFileName, FileMode, FileAccess)。
这种方式有三个参数:第一个参数为需要打开的文件名;第二个参数为打开的模式(有六种打开模式:Append、Open、Create、CreateNew、OpenOrCreate、Truncate);第三个参数为访问权限(有三种访问权限:Read、Write、ReadWrite)。
06、FileStream提供了很多种有用的方法和属性,常用的有:
CanRead | 判断当前流(Stream)是否支持读取操作。 |
CanWrite | 判断当前流是否支持写入的操作。 |
CanSeek | 判断当前流是否支持搜索。 |
IsAsync | 判断当前流是否处于异步打开模式。 |
Position | 获取或设置当前流所处的位置。 |
Flush | 将当前缓冲区的数据写入文件。 |
Lock | 锁定当前流的部分或全部,以防止其他文件访问。 |
Read | 从当前流中读取字节块,然后存入指定的缓冲区。 |
ReadByte | 从文件中读取一个字节,然后将读取位置向前移一个字节。 |
Seek | 设置当前流操作的指针位置。 |
UnLock | 解除锁定。 |
Write | 向当前流写入字节块。 |
WriteByte | 在当前流位置写入一个字节。 |
这些方法和属性是FileStream常用的,但很多情况下很少使用。在编程时可以将这些方法交给StreamReader、StreamWriter、BinaryReader、BinaryWriter这些类来完成操作。
07、BinaryReader和BinaryWriter都有一个BaseStream属性,它们用于控制当前文件流的各项操作。通过BaseStream的Seek方法定义操作流的操作指针位置,Seek方法需要两个参数,第一个参数表示指针的定位位置;第二个参数则定义指针定位的相对位置(可以设定三个值:Begin、Current、End)。
08、DirectoryInfo类和FileInfo类,前者用于获取目录的相关信息,后者用于获取文件的相关信息。
DirectoryInfo常用的属性和方法:
Create方法 | 创建一个新目录。 |
CreateSubDirectories方法 | 创建一个或者多个子目录。 |
Delete方法 | 删除一个目录。 |
Exists属性 | 判断目录是否存在。 |
GetDirectories方法 | 获取当前目录的子目录集合。 |
GetFiles方法 | 获取当前目录的文件集合。 |
GetFileSystemInfos方法 | 获取当前目录FileSystemInfo(包括目录和文件)集合。 |
MoveTo方法 | 将整个目录移到一个新的路径。 |
Name属性 | 获取当前目录的目录名。 |
Parents属性 | 获取当前目录的父目录名。 |
Root属性 | 获取当前目录的根目录。 |
FileInfo常用的属性和方法有:
CopyTo方法 | 将一个存在的文件拷贝为一个新文件。 |
AppendText方法 | 创建一个StreamWriter对象,用于在文件尾部添加新文本。 |
Create方法 | 创建一个新文件。 |
CreateText方法 | 创建一个SteamWriter对象,用于创建一个新文本文件。 |
Delete方法 | 删除文件。 |
Exists属性 | 用于判断文件是否存在。 |
Length属性 | 获取文件的大小。 |
MoveTo方法 | 将文件移到一个新的路径。 |
CopyTo方法 | 将文件拷贝到一个新的路径。 |
Name属性 | 获取文件名。 |
Extension属性 | 获取文件的扩展名。 |
FileInfo类与DirectoryInfo类共有的时间属性有:
CreationTime | 目录或文件的创建时间。 |
LastAccessTime | 最后一次访问时间。 |
LastWriteTime | 最后一次修改时间。 |