文章教程

14.3处理文件

8/31/2020 9:52:39 PM 人评论 次浏览

14.3 处理文件

通过Directory和DirectoryInfo类可以很方便地显示和浏览文件系统,如果要进一步显示文件夹中的文件列表,则可以使用System.IO命名空间中的File及FileInfo类。

14.3.1 使用File类

File类是一个静态的类,提供了许多用于处理文件的静态方法,如复制、移动、重命名、创建、打开及删除文件。也可以将File类用于获取和设置文件属性或有关文件创建、访问及写入操作的DataTime信息等。File类的主要静态方法有以下数种:

1.Open方法

Open是打开文件的方法,其声明的代码如下:

alt

以上代码中第1行定义一个静态的方法Open,它有一个返回值FileStream代表指定路径上的文件流。该方法有三个参数,第1行的path用来指定要打开文件的路径。第2行的Mode是一个FileMode枚举类型,用于指定在文件不存在时是否创建该文件,并确定是保留还是改写现有文件的内容。第4行的access是一个FileAccess枚举类型,用于指定可以对文件执行的操作。表14-3和表14-4中分别列出了FileAccess和FileMode的成员。

表14-3 FileAccess的成员

alt

表14-4 FileMode的成员

alt

(续表)

alt

下面的代码将实现打开存放在D:\vs2012目录下名为New.txt的文件。

alt

以上代码中第1行定义一个私有类型的方法OpenFile。第2行通File类的静态方法Open打开存放在D:\vs2012目录下名为New.txt的文件。

2.Create方法

Create是创建一个新文件的方法,它的声明代码如下所示:

alt

以上代码中第1行定义一个静态的方法Create。第2行参数path用来指定要创建文件的路径和名称。如果path指定的文件不存在,则创建该文件;如果存在并且不是只读的,则将改写其内容。

下面的代码将实现如何在D:\vs2012目录下创建名为New.txt的文件。

alt

以上代码中第1行定义一个私有类型的方法CreateFile,第2行通过File类的静态方法Create在D:\vs2012目录下创建一个名为New.txt的文件并赋给FileStream类型的对象fs。第3行使用fs对象的Colse方法关闭所创建的文件。

3.Delete方法

Delete是删除指定目录文件的方法,该方法声明的代码如下:

alt

以上代码中第1行定义一个静态的方法Delete。第2行的参数path用来指定要创建文件的路径和名称。如果path指定的文件不存在,不会引发一个异常。

下面的代码将实现如何在D:\vs2012目录下删除名为New.txt的文件:

alt

以上代码中第1行定义一个私有类型的方法DeleteFile,第2行通过File类的静态方法Delete删除在D:\vs2012目录的名为New.txt的文件。

4.Copy方法

Copy是将现有文件复制到新文件的方法。该方法声明的代码如下:

alt

以上代码,第1行定义一个静态的方法Copy。其中,第2行和第3行的参数sourceFileName和destFileName分别用来指定要复制的源文件和目标文件的名称。第4行的参数overwrite用来指定如果目标文件已经存在是否要覆盖它,是为true,否为false。

下面的代码演示将D:\vs2012\New.text文件复制到C:\vs2012\New.text。

alt

以上代码,第1行定义一个私有类型的方法CopyFile,第2行通过File类的静态方法Copy将C:\vs2012\New.text文件复制到D:\vs2012\New.text。如果D:\vs2010目录中已经存在将被复制的文件所覆盖。

5.Move方法

Move是将指定文件移动到新位置的方法。该方法声明的代码如下:

alt

以上代码中第1行定义一个静态的方法Move。第2行的参数sourceFileName用于指定要移动的文件的名称。第3行的参数destFileName用于指定文件的新路径。如果源路径和目标路径相同,不会引发异常。

下面的代码实现将C:\vs2012下的New.text文件移动到D盘根目录下:

alt

以上代码,第1行定义一个私有类型的方法MoveFile,第2行通过File类的静态方法Move将C:\vs2012\New.text文件移动到D:\下。

6.SetAttributes方法

SetAttributes是设置指定路径上文件属性的方法。该方法声明的代码如下:

alt

以上代码中第1行定义一个静态的方法SetAttributes,第2行的参数path用来指定文件的路径。第3行的参数fileAttributes用于指定所需的FileAttributes,比如Hidden、ReadOnly、Normal或Archive。fileAttributes的成员请参见表14-2。

下面的代码实现设置文件C:\vs2012\New.text的属性为只读且隐藏。

alt

以上代码中第1行定义一个私有类型的方法SetFile,第2行通File类的静态方法SetAttributes设置D:\vs2010\New.text文件为只读并且隐藏。

7.Exists方法

Exists是判断指定的文件是否存在的方法。该方法声明的代码如下:

alt

以上代码中第1行定义一个静态的Exists方法,该方法返回一个布尔类型的值,如果文件存在返回值为true,否则返回值为false。第2行的参数path指定要检查的文件。

下面的代码实现判断C:\vs2012文件夹下名为Website的文件是否存在,如果存在则复制文件然后将其删除,否则创建文件并打开。

alt

以上代码中第1行定义一个私有类型的方法Handle,第2行通过File类的静态方法Exists判断C:\vs2012\New.text文件如果存在,则第3行调用CopyFile复制该文件。第4行调用DeleteFile方法删除源文件。否则,第7行调用Create.File创建该文件。第8行调用Open.File方法打开新创建的文件。

14.3.2 使用FileInfo类

FileInfo类不是静态类,没有静态方法,仅可用于实例化的对象。FileInfo对象表示磁盘或网络位置的物理文件。只要提供文件的路径就可以创建一个FileInfo对象,如以下代码:

alt

FileInfo类提供了许多类似于File类的方法,但是因为File类是静态类,需要一个字符串参数为每个方法调用指定文件的位置。下面的代码使用FileInfo类实现用来检查文件C:\vs2012\New.text是否存在,请大家区别于File类的使用:

alt

以上代码,第1行实例化一个FileInfo类的对象fi,并提供了文件路径。第2行调用fi的方法Exsits判断该文件如果存在,第3行在页面上显示提示文字。

FileInfo类中常用方法有以下数种,下面进行一一地介绍。

1.Open方法

Open是打开文件方法。其声明的代码如下所示:

alt

以上代码,第1行定义一个Open的方法,它有一个返回值FileStream代表指定路径上的文件流。该方法有两个参数,第2行的mode是一个FileMode枚举类型,用于指定在文件不存在时是否创建该文件,并确定是保留还是改写现有文件的内容。第3行的Access是一个FileAccess枚举类型,用于指定可以对文件执行的操作。可以看出,FileInfo.Open方法只比File.Open方法少了一个参数path,这时因为在实例化FileInfo时就已经给出了path。

下面的代码使用FileInfo.Open方法打开存放在C:\vs2012目录下的New.text文件。

alt

以上代码:第1行定义一个私有类型的方法OpenFile。第2行实例化一个FileInfo类的对象fi,并提供了文件路径。第3行调用fi的Open方法打开文件并赋给一个FileStream类型的对象fs。

2.FileInfo类方法

FileInfo中其他的方法和Open的方法用法相似。下表14-5中列出了它们的名称和用途。

表14-5 FileInfo类的方法

alt

另外,FileInfo类也提供了与文件相关的属性,FileInfo类的属性如表14-6所示,这些属性可以用来获取或更新文件的信息。

表14-6 FileInfo类的属性

alt

(续表)

alt

【实例14-4】处理文件

本实例根据提供的源文件和目标文件路径,演示文件的创建、复制、移动和删除操作,并给出相应的操作提示信息,具体实现步骤如下:

01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例14-4”。

02 在网站根目录下创建一个名为Default.aspx的窗体文件。

03 单击网站的目录下的Default.aspx文件,进入的“视图编辑”界面,从工具箱中拖动4个Label控件、两个TextBox控件和两个Button控件。

04 双击网站目录下的Default.aspx.cs文件,编写代码如下:

alt

上面的代码中第1行定义处理移动按钮事件,执行移动文件操作的方法。第2、3行获取源文件和目标文件路径。第4、5行判断如果两个路径字符串不空则执行移动操作。

第8行定义处理复制按钮事件,执行复制文件操作的方法。第9、10行获取源文件和目标文件路径。第11、12行判断如果两个路径字符串不空则执行复制操作。第15行定义移动或复制文件的方法。第17行获取站点根文件夹。第18行组合获取源文件路径。第19行组合获取目标文件路径。第21行获取源文件所在的文件夹。第22行~第25行文件夹不存在则新建。第26行~第29行判断源文件是否存在,不存在则新建文件。第30行获取目标文件所在的文件夹。第31行~第34行判断如果文件夹不存在则新建。第35行~第39行判断KeepSource为true保留源文件则复制文件,否则移动文件,其中第36行复制文件,如果目标文件存在则覆盖。第39到43行判断目标文件是否存在,存在则删除文件。第44行移动文件。第47行~第52行查看源文件是否存在,区分移动和复制操作。第57行返回执行信息。

05 按快捷键Ctrl+F5运行程序,如图14-4所示。

alt

图14-4 运行结果

教程类别