VisualC2008大学教程第十九章ppt课件_第1页
VisualC2008大学教程第十九章ppt课件_第2页
VisualC2008大学教程第十九章ppt课件_第3页
VisualC2008大学教程第十九章ppt课件_第4页
VisualC2008大学教程第十九章ppt课件_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#语言程序设计理工大学华信软件学院 张一鸣理工大学华信软件学院理工大学华信软件学院 张一鸣张一鸣20192019年年8 8月月2020日日C#C#语言程序设计语言程序设计C#语言程序设计理工大学华信软件学院 张一鸣 创建、读、写和更新文件创建、读、写和更新文件 C#流类层次流类层次 用用File与与Directory类取得计算机上的文件与目录信息类取得计算机上的文件与目录信息 用用LINQ查找目录查找目录 顺序访问文件处理顺序访问文件处理 用类用类FileStream、StreamReader与与StreamWriter读写文读写文本文件本文件 用用LINQ和和yield return迭代文

2、件记录,找到匹配指定条件的迭代文件记录,找到匹配指定条件的记录记录 用类与用类与BinaryFormatter读写对象文件读写对象文件C#语言程序设计理工大学华信软件学院 张一鸣 存储在程序变量或数组中的数据是临时的,在程序存储在程序变量或数组中的数据是临时的,在程序运行结束后就会消失。文件则用来永久性地保存大运行结束后就会消失。文件则用来永久性地保存大量的数据,在创建数据的程序终止后仍然保存。计量的数据,在创建数据的程序终止后仍然保存。计算机把文件存放在辅助存储器上,如磁盘、光盘、算机把文件存放在辅助存储器上,如磁盘、光盘、闪存闪存U U盘或磁带上。盘或磁带上。 本章介绍本章介绍C#C#程序

3、中如何创建、更新和处理数据,首程序中如何创建、更新和处理数据,首先概述从位到文件的数据层次,然后介绍先概述从位到文件的数据层次,然后介绍FCLFCL的一些的一些文件处理类,进而用实例介绍如何确定计算机上的文件处理类,进而用实例介绍如何确定计算机上的文件与目录信息。最后介绍如何操作文本文件和二文件与目录信息。最后介绍如何操作文本文件和二进制格式对象格式的二进制文件。进制格式对象格式的二进制文件。C#语言程序设计理工大学华信软件学院 张一鸣一个计算机系统是按照层次组织数据的,即一个计算机系统是按照层次组织数据的,即由位组成字节,字节组成字段域),字段组由位组成字节,字节组成字段域),字段组成记录,

4、记录组成文件,文件组成数据库。成记录,记录组成文件,文件组成数据库。字段是一组有意义的字符。例如,一个学生字段是一组有意义的字符。例如,一个学生的姓名、学号、专业等。的姓名、学号、专业等。一个记录描述一个实体一个记录描述一个实体Entity),它可以是),它可以是一个人,一个地方、一个事物或者一个事件。一个人,一个地方、一个事物或者一个事件。有关实体的信息需要管理和维护。有关实体的信息需要管理和维护。C#语言程序设计理工大学华信软件学院 张一鸣 计算机处理的数据项构成了计算机处理的数据项构成了“数据的层次数据的层次”。在这个结。在这个结构中,数据项从位到字符再到域是越来越大、越来越复构中,数据

5、项从位到字符再到域是越来越大、越来越复杂。杂。 通常,记录是由多个域构成的。例如,一张工资表中,通常,记录是由多个域构成的。例如,一张工资表中,为雇员建立的一条记录会包含下述各域:为雇员建立的一条记录会包含下述各域:1 1、雇员标识符、雇员标识符2 2、名字、名字3 3、地址、地址4 4、小时工资等级、小时工资等级 5 5、免税申请号、免税申请号6 6、年度收入、年度收入7 7、税收额、税收额 在上面的例子中,每一个域都针对同一个雇员。在上面的例子中,每一个域都针对同一个雇员。一个文件就是一组相关的记录的集合。记录的个数可以一个文件就是一组相关的记录的集合。记录的个数可以是几条,也可能是成千上

6、万条。是几条,也可能是成千上万条。C#语言程序设计理工大学华信软件学院 张一鸣为了查找文件中某个制定的记录,在文件中的每个记录至少为了查找文件中某个制定的记录,在文件中的每个记录至少要选出一个字段或域来作为记录关键字要选出一个字段或域来作为记录关键字record key),它它唯一地标识属于某个人或实体的的记录。例如,在上面提到的唯一地标识属于某个人或实体的的记录。例如,在上面提到的工资记录表中,通常用雇员标识号作为记录关键字。工资记录表中,通常用雇员标识号作为记录关键字。SallyBlackTomBlueIrisOrangeJudyGreenRandyRedJudyGreen文件文件记录记录

7、Judy域域字节字节01001010位位1C#语言程序设计理工大学华信软件学院 张一鸣文件中的记录有多种组织方式。最常见的是按记录关文件中的记录有多种组织方式。最常见的是按记录关键字字段的顺序存储记录,按这种方式存储记录的文件键字字段的顺序存储记录,按这种方式存储记录的文件称为称为“顺序文件顺序文件”(sequential file)。顺序存取文件)。顺序存取文件的特点是:在这类文件进行读写操作时,总是从文件首的特点是:在这类文件进行读写操作时,总是从文件首开始,从头到尾地读或写。也就是说,当顺序存取文件开始,从头到尾地读或写。也就是说,当顺序存取文件时,要读第时,要读第n个字节,先要读取前个

8、字节,先要读取前n-1个字节,而不能直个字节,而不能直接读取第接读取第n个字节,写操作也类似。个字节,写操作也类似。直接存取文件又称为随机存取文件,其特点是:可以直接存取文件又称为随机存取文件,其特点是:可以直接指定要读写的字节在文件中的位置,然后直接对此直接指定要读写的字节在文件中的位置,然后直接对此位置上的数据进行读写操作。位置上的数据进行读写操作。C#语言程序设计理工大学华信软件学院 张一鸣绝大多数商业机构要用许多文件来绝大多数商业机构要用许多文件来存储数据。例如,公司里会有工资表存储数据。例如,公司里会有工资表文件、应收项目文件、应付账目文件、文件、应收项目文件、应付账目文件、存货文件

9、和其他多种类型的文件。有存货文件和其他多种类型的文件。有时把一组相关的文件称为时把一组相关的文件称为“数据库数据库”(database)。)。C#语言程序设计理工大学华信软件学院 张一鸣员工档案员工档案姓名姓名地址地址性别性别 职务职务 工资单工资单基础工资基础工资奖金、交税奖金、交税其他支出其他支出 实发工资实发工资 福利福利人身保险人身保险养老金计划养老金计划保健计划保健计划 退休保障退休保障 文件管文件管理系统理系统员工档案员工档案应用程序应用程序工资管理工资管理应用程序应用程序福利管理福利管理应用程序应用程序培训培训专业培训专业培训外语培训外语培训 岗位培训岗位培训 培训管理培训管理应

10、用程序应用程序人事部人事部人事部人事部人事部人事部人事部人事部集成的人力资源数据库集成的人力资源数据库C#语言程序设计理工大学华信软件学院 张一鸣 数据的冗余和混淆数据的冗余和混淆 在多个数据文件中重复出现相同在多个数据文件中重复出现相同的数据为数据冗余,它导致数据存储空间的浪费和数的数据为数据冗余,它导致数据存储空间的浪费和数据的不一致。据的不一致。 程序程序-数据的依赖性数据的依赖性 是指数据文件和维护它的相关是指数据文件和维护它的相关应用程序之间的过分依赖。应用程序之间的过分依赖。 缺乏灵活性缺乏灵活性 传统的文件系统可以处理定义完好的报传统的文件系统可以处理定义完好的报表,但对于特殊的

11、表和临时定义的需求却无能为力。表,但对于特殊的表和临时定义的需求却无能为力。 安全性差安全性差 对数据缺乏控制和管理,实际上对访问和对数据缺乏控制和管理,实际上对访问和分发信息失控。分发信息失控。 数据的共享性和有效性差数据的共享性和有效性差 不同文件的信息相互没有不同文件的信息相互没有联系,使得信息不能被共享和及时访问。联系,使得信息不能被共享和及时访问。C#语言程序设计理工大学华信软件学院 张一鸣C#C#语言把每一个文件都看作一个有序的字节流,即语言把每一个文件都看作一个有序的字节流,即若干顺序排列的字节串形成一个连续的流,写在磁盘等若干顺序排列的字节串形成一个连续的流,写在磁盘等外部存储

12、器上。每个文件以文件结束符或特定的字节号外部存储器上。每个文件以文件结束符或特定的字节号处结束。当打开一个文件时,该文件就和某个流关联起处结束。当打开一个文件时,该文件就和某个流关联起来。程序执行时,运行环境创建三个流对象来支持程序来。程序执行时,运行环境创建三个流对象来支持程序与特定文件或设备之间的通信:标准输出流对象与特定文件或设备之间的通信:标准输出流对象Console.OutConsole.Out使程序向屏幕输出数据、标准输入流对象使程序向屏幕输出数据、标准输入流对象Console.InConsole.In使程序从键盘输入数据、与标准错误流对象使程序从键盘输入数据、与标准错误流对象Co

13、nsole.ErrorConsole.Error使程序向屏幕输出错误消息。使程序向屏幕输出错误消息。C#语言程序设计理工大学华信软件学院 张一鸣前面章节已经介绍过的前面章节已经介绍过的Console方法方法WriteLine和和Write用用Console.Out进行输出,进行输出, Console方法方法Read和和ReadLine用用Console.In进行输入。进行输入。FCL中文件处理类的派生关系:中文件处理类的派生关系:TextReaderTextWriterStreamStreamReaderStreamWriterFileStream派生派生从文件输入文本从文件输入文本将文件输出

14、到文本将文件输出到文本从文件输入文本从文件输入文本C#语言程序设计理工大学华信软件学院 张一鸣System.ObjectSystem.MarshallByRefObj,System.IO.PathSystem.IO.FileSystem.IO.DirectorySystem.IO.StreamSystem.IO.TextReaderSystem.IO.TextWriterSystem.IO.FileSystemInfoSystem.IO.ComponentSystem.IO.FileStreamSystem.IO.StreamReaderSystem.IO.StreamWriterSystem

15、.IO.FilleInfoSystem.IO.DirectoryInfoSystem.IO.FileSystemWatcherC#语言程序设计理工大学华信软件学院 张一鸣 File: File: 提供创建、复制、删除、移动和打开文件的静态方法,提供创建、复制、删除、移动和打开文件的静态方法,并协助创建并协助创建FileStreamFileStream对象。对象。 Directory: Directory: 提供创建、复制、删除、移动和打开目录的静态方提供创建、复制、删除、移动和打开目录的静态方法。法。 Path: Path: 对包含文件或目录路径信息的字符串执行操作。对包含文件或目录路径信息的

16、字符串执行操作。 FileInfo:FileInfo:提供创建、复制、删除、移动和打开文件的实例方法,提供创建、复制、删除、移动和打开文件的实例方法,并协助创建并协助创建FileStreamFileStream对象。对象。 DirectoryInfo: DirectoryInfo: 提供创建、复制、枚举目录和子目录的实例方提供创建、复制、枚举目录和子目录的实例方法。法。 FileStream: FileStream: 指向文件流,支持对文件的读指向文件流,支持对文件的读/ /写和随机访问文件。写和随机访问文件。 StreamReader: StreamReader: 从流中读取字符数据。从流中

17、读取字符数据。 StreamWriter: StreamWriter: 向流中写入字符数据。向流中写入字符数据。 FileSystemWatcherFileSystemWatcher:用于监视文件和目录的变化。:用于监视文件和目录的变化。C#语言程序设计理工大学华信软件学院 张一鸣C#分别提供了分别提供了File类和类和Directory类用于操纵文件和目录信息。类用于操纵文件和目录信息。这两个类可以被实例化,但不能被其他类继承。这两个类可以被实例化,但不能被其他类继承。File类类File类支持对文件的创建、复制、删除、移动和打开的静态方类支持对文件的创建、复制、删除、移动和打开的静态方法,

18、并协助创建文件流法,并协助创建文件流FileStream对象。该类包含了对象。该类包含了40多个方多个方法,下表列出了一些常用的方法。留意:法,下表列出了一些常用的方法。留意: 由于由于File类中的所有方法都是静态的类中的所有方法都是静态的 ,所以如果只想执行一,所以如果只想执行一个操作,那么使用个操作,那么使用File类中方法的效率比使用类中方法的效率比使用FileInfo类中的方类中的方法要高。法要高。 File类中的静态方法对所有方法都执行安全检查,因此如果打类中的静态方法对所有方法都执行安全检查,因此如果打算多次重用某个对象,要用算多次重用某个对象,要用FileInfo类中的方法。类

19、中的方法。C#语言程序设计理工大学华信软件学院 张一鸣静态方法静态方法描述描述AppendText返回返回StreamWriter, 将文本添加到现有文件或建新文件将文本添加到现有文件或建新文件Copy将文件复制到新文件将文件复制到新文件Create创建文件并返回相关联的创建文件并返回相关联的FileStreamCreateText创建文本文件并返回相关联的创建文本文件并返回相关联的StreamWriterDelete删除指定文件删除指定文件Existes指定文件存在时返回指定文件存在时返回true,否则返回,否则返回falseGetCreationTime返回返回DateTime对象,表示文

20、件创建时间对象,表示文件创建时间GetLastAccessTime返回返回DateTime对象,表示文件最后访问时间对象,表示文件最后访问时间GetLastWriteTime返回返回DateTime对象,表示文件修改时间对象,表示文件修改时间Move将指定文件移到指定目录,并提供指定新文件名的选将指定文件移到指定目录,并提供指定新文件名的选项项Open打开指定路径上的打开指定路径上的FileStreamOpenRead打开现有文件以进行读取打开现有文件以进行读取C#语言程序设计理工大学华信软件学院 张一鸣静态方法静态方法描述描述OpenText打开现有打开现有UTF-8编码文件以进行读取编码文

21、件以进行读取OpenWrite打开现有文件以进行写入打开现有文件以进行写入ReadAllBytes打开一文件,将其内容读入字符串,并关闭该文件打开一文件,将其内容读入字符串,并关闭该文件ReadAllLines打开文本文件,将其所有行读入字符串数组,并关闭打开文本文件,将其所有行读入字符串数组,并关闭之之ReadAllText打开文本文件,将其所有行读入一个字符串,并关闭打开文本文件,将其所有行读入一个字符串,并关闭之之Replace用其他文件内容替换指定文件内容用其他文件内容替换指定文件内容SetCreationTime设置创建文件的日期和时间设置创建文件的日期和时间SetLastAcces

22、sTime设置最后访问文件的日期和时间设置最后访问文件的日期和时间SetLastWriteTime设置最后修改文件的日期和时间设置最后修改文件的日期和时间WriteAllBytes创建新文件,向其写入指定字符数组,并关闭该文件创建新文件,向其写入指定字符数组,并关闭该文件WriteAllLines创建新文件,向其写入指定字符串,并关闭之创建新文件,向其写入指定字符串,并关闭之WriteAllText创建新文件,向其写入指定内容,并关闭之创建新文件,向其写入指定内容,并关闭之C#语言程序设计理工大学华信软件学院 张一鸣新建一个新建一个Windows应用程序,命名为应用程序,命名为test1。默认

23、。默认窗体为窗体为Form1.csForm1窗体中添加一个窗体中添加一个TextBox控件和一个控件和一个Button控件。其中,控件。其中,TextBox控件用来输入要创建的文件控件用来输入要创建的文件路径及名称,路径及名称,Button控件用来接收用户鼠标单击控件用来接收用户鼠标单击并执行创建文件操作。并执行创建文件操作。注意使用与文件、文件夹及流相关的类时,首先需注意使用与文件、文件夹及流相关的类时,首先需要添加要添加System.IO命名空间。命名空间。C#语言程序设计理工大学华信软件学院 张一鸣using System; using System.Collections.Generi

24、c;using System.ComponentModel; using System.IO;using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;namespace _ public partial class Form1 : Form public Form1 ( ) InitializeComponent ( ); private void button1_Click ( object sender, EventArgs e ) if ( textBox1.Text =

25、 string.Empty ) / MessageBox.Show ( 文件名不能为空!文件名不能为空!); 判断输入的文判断输入的文件名是否为空件名是否为空C#语言程序设计理工大学华信软件学院 张一鸣 else if ( File.Exists ( textBox1.Text ) ) MessageBox.Show(该文件已经存在该文件已经存在); else File.Create(textBox1.Text); 使用使用File类的类的Exists方法判方法判断要创建的文件是否存在断要创建的文件是否存在使用使用File类的类的Create方法创建文件方法创建文件C#语言程序设计理工大学华信

26、软件学院 张一鸣程序运行前程序运行前输入文件名输入文件名输入文件名输入文件名若已存在,报警若已存在,报警C#语言程序设计理工大学华信软件学院 张一鸣Directory类提供了用于创建、枚举、删除、类提供了用于创建、枚举、删除、移动目录和子目录的静态方法,移动目录和子目录的静态方法, Directory类中方法的效率比使用类中方法的效率比使用DirectoryInfo类中类中的方法要高。下表列出了一些常用的方法。的方法要高。下表列出了一些常用的方法。C#语言程序设计理工大学华信软件学院 张一鸣静态方法静态方法描述描述CreateDirectory创建目录并返回相关联的创建目录并返回相关联的Dir

27、ectoryInfo对象对象Delete删除指定目录删除指定目录Exists指定目录存在时返回指定目录存在时返回true,否则返回,否则返回falseGetDirectories返回一个字符串数组,包含指定目录中的子目录名返回一个字符串数组,包含指定目录中的子目录名GetFiles返回一个字符串数组,包含指定目录中的文件名返回一个字符串数组,包含指定目录中的文件名GetFileSystemEntries 返回指定目录中的子目录名返回指定目录中的子目录名GetCreationTime返回返回DateTime对象,表示目录创建日期和时间对象,表示目录创建日期和时间GetLastAccessTime

28、返回返回DateTime对象,表示目录最后访问日期和时间对象,表示目录最后访问日期和时间GetLastWriteTime返回返回DateTime对象,表示目录修改日期和时间对象,表示目录修改日期和时间GetParent检索指定路径的父目录,包括绝对路径和相对路径检索指定路径的父目录,包括绝对路径和相对路径Move将指定目录移到指定新位置将指定目录移到指定新位置SetCreationTime为指定目录设置创建日期和时间为指定目录设置创建日期和时间SetLastAccessTime为指定目录设置目录最后访问日期和时间为指定目录设置目录最后访问日期和时间SetLastWriteTime为指定目录设置

29、目录修改日期和时间为指定目录设置目录修改日期和时间C#语言程序设计理工大学华信软件学院 张一鸣新建一个新建一个Windows应用程序,命名为应用程序,命名为test2。默认。默认窗体为窗体为Form1.csForm1窗体中添加一个窗体中添加一个TextBox控件和一个控件和一个Button控件。其中,控件。其中,TextBox控件用来输入要创建的文件控件用来输入要创建的文件夹路径及名称,夹路径及名称,Button控件用来接收用户鼠标单控件用来接收用户鼠标单击并执行创建文件夹操作。击并执行创建文件夹操作。注意使用与文件、文件夹及流相关的类时,首先需注意使用与文件、文件夹及流相关的类时,首先需要添

30、加要添加System.IO命名空间。命名空间。C#语言程序设计理工大学华信软件学院 张一鸣using System; using System.Data; using System.Text; using System.IO; using System.Windows.Forms;using System.Collections.Generic; using System.Drawing;using System.ComponentModel; namespace _ public partial class Form1 : Form public Form1 ( ) InitializeCo

31、mponent ( ); private void button1_Click ( object sender, EventArgs e ) if ( textBox1.Text = string.Empty ) MessageBox.Show ( 文件夹名称不能为空!文件夹名称不能为空! ); else判断输入的文判断输入的文件名是否为空件名是否为空C#语言程序设计理工大学华信软件学院 张一鸣 if (Directory.Exists ( textBox1.Text ) ) MessageBox.Show (该文件夹已经存在该文件夹已经存在); else Directory.CreateDi

32、rectory(textBox1.Text); 运用运用 Directory 类的类的Exists方法方法判断要创建的文件夹是否存在判断要创建的文件夹是否存在使用使用Directory类的类的CreateDirectory方法方法创建文件夹创建文件夹C#语言程序设计理工大学华信软件学院 张一鸣程序运行前程序运行前输入文件夹名输入文件夹名输入文件夹名输入文件夹名若已存在,报警若已存在,报警C#语言程序设计理工大学华信软件学院 张一鸣C#分别提供了分别提供了FileInfo类和类和DirectoryInfo类类用于操纵文件和目录信息,从这点来看,这用于操纵文件和目录信息,从这点来看,这与与File

33、类和类和Directory类非常近似。但是从类非常近似。但是从C#语法的角度来看,这两个类都是普通类,都语法的角度来看,这两个类都是普通类,都没有静态方法。而没有静态方法。而File类和类和Directory类则属类则属于静态类,都包含有静态方法。于静态类,都包含有静态方法。C#语言程序设计理工大学华信软件学院 张一鸣FileInfo类的方法仅用于实例化的对象,支持对文件的类的方法仅用于实例化的对象,支持对文件的创建、复制、删除、移动和打开等操作。创建、复制、删除、移动和打开等操作。File类是静态类,故其调用需要字符串参数为每一个方类是静态类,故其调用需要字符串参数为每一个方法调用规定文件位

34、置。因此如果在对象上进行单一的方法法调用规定文件位置。因此如果在对象上进行单一的方法调用,就用静态调用,就用静态File类的方法,这时类的方法,这时.NET框架不必执行实框架不必执行实例化新对象并调用其方法的过程,执行速度快。若在文件例化新对象并调用其方法的过程,执行速度快。若在文件上执行几种操作,则实例化上执行几种操作,则实例化FileInfo对象会在文件系统上对象会在文件系统上一直引用正确的文件,不用像静态类那样每次都寻找文件,一直引用正确的文件,不用像静态类那样每次都寻找文件,可以节约时间,提高效率。可以节约时间,提高效率。下表列出了该类一些常用的属性。下表列出了该类一些常用的属性。C#

35、语言程序设计理工大学华信软件学院 张一鸣属性属性说明说明CreationTime获取或设置当前获取或设置当前FileSystemInfo对象的创建时间对象的创建时间Directory获取父目录的实例获取父目录的实例DirectoryName获取表示目录的完整路径的字符串获取表示目录的完整路径的字符串Existes获取指示文件是否存在的值获取指示文件是否存在的值Extension获取表示文件扩展名部分的字符串获取表示文件扩展名部分的字符串FullName获取目录或文件的完整目录获取目录或文件的完整目录IsReadOnly获取或设置当前文件是否为只读的逻辑值获取或设置当前文件是否为只读的逻辑值La

36、stAccessTime获取或设置当前文件或目录的最后访问时间获取或设置当前文件或目录的最后访问时间LastWriteTime获取或设置当前文件或目录的最后修改时间获取或设置当前文件或目录的最后修改时间Length获取当前文件的大小获取当前文件的大小Name获取文件名获取文件名C#语言程序设计理工大学华信软件学院 张一鸣新建一个新建一个Windows应用程序,命名为应用程序,命名为test3。默认。默认窗体为窗体为Form1.csForm1窗体中添加一个窗体中添加一个TextBox控件和一个控件和一个Button控件。其中,控件。其中,TextBox控件用来输入要创建的文件控件用来输入要创建的

37、文件路径及名称,路径及名称,Button控件用来接收用户鼠标单击控件用来接收用户鼠标单击并执行创建文件操作。并执行创建文件操作。C#语言程序设计理工大学华信软件学院 张一鸣private void button1_Click ( object sender, EventArgs e ) if ( textBox1.Text = string.Empty ) MessageBox.Show ( 文件名称不能为空!文件名称不能为空!); else FileInfo finfo = new FileInfo ( textBox1.Text ); if ( finfo.Exists ) Message

38、Box.Show ( 该文件已经存在该文件已经存在“ ); else finfo.Create ( ); 判断输入的文判断输入的文件名是否为空件名是否为空使用使用FileInfo对象的对象的Exists属性判断要创建属性判断要创建的文件是否存在的文件是否存在使用使用FileInfo对象的对象的Create方法创建文件方法创建文件C#语言程序设计理工大学华信软件学院 张一鸣程序运行前程序运行前输入文件名输入文件名输入文件名输入文件名若已存在,报警若已存在,报警C#语言程序设计理工大学华信软件学院 张一鸣DirectoryInfo类的方法仅用于实例化的对象,支持对类的方法仅用于实例化的对象,支持对

39、文件夹的创建、复制、删除、移动和打开等操作。文件夹的创建、复制、删除、移动和打开等操作。Directory类是静态类,故其调用需要字符串参数为每类是静态类,故其调用需要字符串参数为每一个方法调用规定文件夹位置。因此如果在对象上进行单一个方法调用规定文件夹位置。因此如果在对象上进行单一的方法调用,就用静态一的方法调用,就用静态Directory类的方法,这时类的方法,这时.NET框架不必执行实例化新对象并调用其方法的过程,执行速框架不必执行实例化新对象并调用其方法的过程,执行速度快。若在文件上执行几种操作,则实例化度快。若在文件上执行几种操作,则实例化DirectoryInfo对象会在文件系统上

40、一直引用正确的文件夹,不用像静态对象会在文件系统上一直引用正确的文件夹,不用像静态类那样每次都寻找文件夹,可以节约时间,提高效率。类那样每次都寻找文件夹,可以节约时间,提高效率。下表列出了该类一些常用的属性。下表列出了该类一些常用的属性。C#语言程序设计理工大学华信软件学院 张一鸣属性属性说明说明CreationTime获取或设置当前获取或设置当前FileSystemInfo对象的创建时间对象的创建时间Exists获取指示文件夹是否存在的值获取指示文件夹是否存在的值Extension获取表示文件扩展名部分的字符串获取表示文件扩展名部分的字符串FullName获取目录或文件的完整目录获取目录或文

41、件的完整目录LastAccessTime获取或设置当前文件或目录的最后访问时间获取或设置当前文件或目录的最后访问时间LastWriteTime获取或设置当前文件或目录的最后修改时间获取或设置当前文件或目录的最后修改时间Name获取获取DirectoryInfo实例的名称实例的名称Parent获取指定子目录的父目录获取指定子目录的父目录Root获取路径的根部分获取路径的根部分C#语言程序设计理工大学华信软件学院 张一鸣新建一个新建一个Windows应用程序,命名为应用程序,命名为test4。默认。默认窗体为窗体为Form1.csForm1窗体中添加一个窗体中添加一个TextBox控件和一个控件和

42、一个Button控件。其中,控件。其中,TextBox控件用来输入要创建的文件控件用来输入要创建的文件夹路径及名称,夹路径及名称,Button控件用来接收用户鼠标单控件用来接收用户鼠标单击并执行创建文件夹操作。击并执行创建文件夹操作。C#语言程序设计理工大学华信软件学院 张一鸣private void button1_Click ( object sender, EventArgs e ) if ( textBox1.Text = string.Empty ) MessageBox.Show ( “文件夹名称不能为空!文件夹名称不能为空!); else DirectoryInfo dinfo

43、= new DirectoryInfo ( textBox1.Text ); if ( dinfo.Exists ) MessageBox.Show ( “该文件夹已经存在该文件夹已经存在“ ); else dinfo.Create ( ); 判断输入的文件判断输入的文件夹名是否为空夹名是否为空使用使用DirectoryInfo对象对象的的Exists属性判断要创属性判断要创建的文件夹是否存在建的文件夹是否存在运用运用 DirectoryInfo对对象的象的Create方法创建方法创建文件夹文件夹C#语言程序设计理工大学华信软件学院 张一鸣程序运行前程序运行前输入文件夹名输入文件夹名输入文件夹

44、名输入文件夹名若已存在,报警若已存在,报警C#语言程序设计理工大学华信软件学院 张一鸣C#分别提供的对文件的基本操作大体可以分别提供的对文件的基本操作大体可以分为:判断文件是否存在、创建文件、复制分为:判断文件是否存在、创建文件、复制或移动文件、删除文件以及获取文件基本信或移动文件、删除文件以及获取文件基本信息等。息等。C#语言程序设计理工大学华信软件学院 张一鸣判断文件是否存在时,使用判断文件是否存在时,使用File类的类的Exists方法或方法或FileInfo类的类的Exists属性来实现。属性来实现。一、一、 File类的类的Exists方法实现的语法如下:方法实现的语法如下:publ

45、ic static bool Exists (string path )其中,其中,path是要检查的文件是要检查的文件返回值:若返回值:若path包含的文件存在并且调用者对该文件有包含的文件存在并且调用者对该文件有访问权,则返回为访问权,则返回为true;否则返回;否则返回false。若。若path为空,为空,也返回也返回false。例如,例如,File.Exists ( “C:Test.txt” );C#语言程序设计理工大学华信软件学院 张一鸣public override bool Exists get; 属性值:若该文件存在,则返回为属性值:若该文件存在,则返回为true;否则若该文件

46、不;否则若该文件不存在或如果该文件是目录,则返回存在或如果该文件是目录,则返回false。例如,下面的代码首先实例化一个例如,下面的代码首先实例化一个FileInfo对象,然后使对象,然后使用该对象调用用该对象调用FileInfo类的类的Exists属性判断属性判断C盘目录下是盘目录下是否存在否存在Test.txt文件。文件。FileInfo fInfo = new FileInfo (“C:Test.txt” );if ( fInfo.Exists ) C#语言程序设计理工大学华信软件学院 张一鸣创建文件可以使用创建文件可以使用File类的类的Create方法或方法或FileInfo类的类的

47、Create属属性来实现。性来实现。一、一、 File类的类的Create方法方法该方法为可重载方法,有如下四种重载形式:该方法为可重载方法,有如下四种重载形式:public static FileStream Create ( string path )public static FileStream Create ( string path, int bufferSize )public static FileStream Create ( string path, int bufferSize, FileOptions options )public static FileStream

48、Create ( string path, int bufferSize, FileOptions options, FileSecurity fileecurity )C#语言程序设计理工大学华信软件学院 张一鸣参数参数说明说明path文件名文件名bufferSize用于读取或写入文件的已放入缓冲区的字节数用于读取或写入文件的已放入缓冲区的字节数OptionsFileOptions值之一,描述如何创建或改写该文件值之一,描述如何创建或改写该文件fileSecurityFileSecurity值之一,描述文件的访问控制和审核值之一,描述文件的访问控制和审核安全性安全性File.Create (

49、 “C:Test.txt” );操作代码示范:操作代码示范:C#语言程序设计理工大学华信软件学院 张一鸣FileInfo类的类的Create方法语法如下:方法语法如下:public FileInfo Create ( )返回值:新文件,默认情况下,该方法将向所有用户授予返回值:新文件,默认情况下,该方法将向所有用户授予对新文件的完全读写访问权限。对新文件的完全读写访问权限。代码示范:首先实例化一代码示范:首先实例化一FileInfo对象,然后使用该对象对象,然后使用该对象调用调用FileInfo类的类的Create方法,在方法,在D盘根目录下创建一个盘根目录下创建一个Text.txt文本文件。

50、文本文件。FileInfo fInfo = new FileInfo (“D:Test.txt” );fInfo.Create ( );C#语言程序设计理工大学华信软件学院 张一鸣复制或移动文件可以使用复制或移动文件可以使用File类的类的Copy方法、方法、Move方法方法或者或者FileInfo类的类的CopyTo方法、方法、MoveTo方法来实现。方法来实现。一、一、 File类的类的Copy方法方法该方法为可重载方法,有如下两种重载形式:该方法为可重载方法,有如下两种重载形式:public static void Copy ( string sourceFileName, string

51、 destFileName )public static void Copy (string sourceFileName, string destFileName, bool overwrite )sourceFileName:要复制的源文件:要复制的源文件destFileName:非目录的目标文件。:非目录的目标文件。overwrite:若可以改写目标文件,为:若可以改写目标文件,为true;否则为;否则为falseC#语言程序设计理工大学华信软件学院 张一鸣复制文件实例:复制文件实例:File.Copy ( “D:Test.txt”, “E:Test.txt” );二、二、 File类的

52、类的Move方法方法将指定文件移到新位置,并提供指定新文件名的选项,语法如将指定文件移到新位置,并提供指定新文件名的选项,语法如下:下:public static void Move ( string sourceFileName, string destFileName )sourceFileName:要移动的文件的名称:要移动的文件的名称destFileName:文件的新路径:文件的新路径移动文件实例:移动文件实例:File.Move ( “D:Test.txt”, “E:Test.txt” );C#语言程序设计理工大学华信软件学院 张一鸣D:ABCTest.txt复制前复制前D:文件文件

53、E:E FGTest.txt复制前复制前E:文件文件复制后复制后D:文件文件E:E FG复制后复制后E:文件文件移动前移动前D:文件文件E:E FGTest.txt移动前移动前E:文件文件D:ABC移动后移动后D:文件文件E:E FG移动后移动后E:文件文件D:ABCTest.txtD:ABCTest.txt执行复制文件命令的效果执行复制文件命令的效果执行移动文件命令的效果执行移动文件命令的效果C#语言程序设计理工大学华信软件学院 张一鸣FileInfo类的类的CopyTo有两种重载方法,其语法如下:有两种重载方法,其语法如下:public FileInfo CopyTo ( string d

54、estFileName )public FileInfo CopyTo ( string destFileName, bool overwrite )destFileName:要复制的目标文件名称:要复制的目标文件名称overwrite:若可以改写目标文件,为:若可以改写目标文件,为true;否则为;否则为false返回值:第一种重载形式返回值为带有限定路径的新文件。第二种重返回值:第一种重载形式返回值为带有限定路径的新文件。第二种重载形式返回值为新文件,或者若载形式返回值为新文件,或者若overwrite为为true,则改写现有文件。,则改写现有文件。代码示范:首先实例化一代码示范:首先实例

55、化一FileInfo对象,然后使用该对象调用对象,然后使用该对象调用FileInfo类的类的CopyTo方法,把方法,把D盘根目录下的盘根目录下的Text.txt文本文件复制到文本文件复制到E盘。盘。FileInfo fInfo = new FileInfo ( “D:Test.txt” );fInfo.CopyTo (“E:Test.txt”, true );C#语言程序设计理工大学华信软件学院 张一鸣FileInfo类的类的MoveTo把指定文件移到新位置,并可以提供把指定文件移到新位置,并可以提供新文件名。其语法如下:新文件名。其语法如下:publicvoid MoveTo ( stri

56、ng destFileName )destFileName:要将源文件名称移动到的新路径:要将源文件名称移动到的新路径代码示范:首先实例化一代码示范:首先实例化一FileInfo对象,然后使用该对象对象,然后使用该对象调用调用FileInfo类的类的MoveTo方法,把方法,把D盘根目录下的盘根目录下的Text.txt文本文件移动到文本文件移动到E盘。然后把原来盘。然后把原来D:盘中的盘中的Text.txt文本文件删除掉。文本文件删除掉。FileInfo fInfo = new FileInfo ( “D:Test.txt” );fInfo.MoveTo ( “E:Test.txt” );C#

57、语言程序设计理工大学华信软件学院 张一鸣删除文件可以使用删除文件可以使用File类的类的Delete方法或者方法或者FileInfo类类的的Delete方法来实现。方法来实现。一、一、 File类的类的Delete方法方法该方法的语法如下:该方法的语法如下:public static void Delete ( string path )path:要删除的文件的名称:要删除的文件的名称例如,下面代码用例如,下面代码用File类的类的Delete方法删除方法删除D:盘根目盘根目录下的录下的Test.txt文本文件:文本文件:File.Delete ( “D:Test.txt” );C#语言程序设

58、计理工大学华信软件学院 张一鸣FileInfo类的类的Delete方法是永久删除文件,其语方法是永久删除文件,其语法如下:法如下:public override Delete ( )代码示范:首先实例化一代码示范:首先实例化一FileInfo对象,然后使对象,然后使用该对象调用用该对象调用FileInfo类的类的Delete方法,把方法,把D盘根盘根目录下的目录下的Text.txt文本文件删除掉。文本文件删除掉。FileInfo fInfo = new FileInfo ( “D:Test.txt” );fInfo.Delete ( );C#语言程序设计理工大学华信软件学院 张一鸣获取文件基本

59、信息时,主要用到了获取文件基本信息时,主要用到了FileInfoFileInfo类的各种属性类的各种属性来实现,包括文件的创建时间、最后访问时间、最后修改来实现,包括文件的创建时间、最后访问时间、最后修改时间、文件所在目录和完整路径、文件长度、文件读写属时间、文件所在目录和完整路径、文件长度、文件读写属性等。性等。 新建一个新建一个WindowsWindows应用程序,命名为应用程序,命名为test5test5。默认窗体为。默认窗体为Form1.csForm1.cs Form1 Form1窗体中添加一个窗体中添加一个OpenFileDialogOpenFileDialog控件、一个控件、一个T

60、extBoxTextBox控件和一个控件和一个ButtonButton控件。其中,控件。其中,OpenFileDialogOpenFileDialog控件用来显示控件用来显示“翻开对话框,翻开对话框,TextBoxTextBox控件用来显示选控件用来显示选择的文件名,择的文件名,ButtonButton控件用来接收用户鼠标单击、执行控件用来接收用户鼠标单击、执行“翻开翻开” ” 对话框并获取文件的基本信息。对话框并获取文件的基本信息。C#语言程序设计理工大学华信软件学院 张一鸣 private void button1_Click ( object sender, EventArgs e )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论