第12章 文件操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

说明: 说明: ① <字符数组>用于保存从流中读取出来的数据。 ② <填充位置>为指针偏移量,指定读取的数据从数组 的第几个位置开始填充,而并非总是从第一个元素开 始。 ③ <读取量>制定了每次从流中读取的字节数。 【例12-3】在“D:\”新建一个文本(.txt)文档,命名 】 为“Welcome.txt”,并写入文字“Welcome to use Visual C# 2005!”。然后创建应用程序,使用Read方法 将其读出并显示在文本框中。
第12章 文件操作
在实际的编程中,经常要在应用程序中操作文件夹和访问 文件。例如建立和删除文件夹、文件,更改文件属性,以 及读取二进制文件或文本文件等。因此,在Visual C# 2005 中,掌握文件操作的方法是十分有用的。 本章学习目标: (1)了解Visual C# 2005中与文件操作有关的类。 (2)掌握文件系统的管理(文件夹和文件管理),包括 Directory类、DirectoryInfo类、File类、FileInfo类的常用 属性和方法的使用。 (3)掌握二进制文件的读写操作。 (4)熟练掌握文本文件的相关操作,如创建、删除、复 制以及读写等。
12.2.5 FileInfo类 类 File类是一个实用类,提供的是操作文件的静态方法,而 FileInfo类代表某个具体的文件对象,提供的是针对该文件 的属性和实例方法。 1. Length属性 属性 Length属性用于获取文件的大小,返回的单位为字节。若 某文件的大小为1024kb,则用Length属性获取其大小的返 回值就为“1024”。 2. Extension属性 属性 Extension属性用于获取文件的扩展名(如“.mdb”)。 3. Name属性 属性 Name属性用于获取路径中的文件名(如“工资管理系统 .mdb”)。 4. GetLastWriteTime属性 属性 GetLastWriteTime属性用于获取上次写入文件的时间。
12.4.2 写二进制文件 与读取二进制文件类似,写文件也有两个方法:WriteByte方法 和Write方法。WriteByte方法一次只写一个字节到流中,而 Write方法可以一次把指定数量的字节写进流中,它们都没有返 回值。 使用Write方法的一般形式为: Write(<要写入的字符数组>, <从数组中的那个位置开始>, <写入 量>) 【例12-4】给【例12-3】中创建的“Welcome.txt”文件写入文本 】 “Welcome to use Visual Basic 2005!”。写入后的结果如图12-17 所示。 分析:给二进制文件写入数据的方法与读取数据类似,本例使 用Write方法实现。
1. CreationTime属性 属性 CreationTime属性用于获取文件夹的创建时间。 2. LastAccessTime属性 属性 LastAccessTime属性用于获取文件夹最近被访问的时 间。 3. Parent属性 属性 Parent属性用于获取当前文件夹的父文件夹。 4. GetDirectories方法 方法 GetDirectories方法用于获取当前文件夹中的所有子文 件夹。 5. GetFiles方法 方法 GetFiles方法用于获取文件夹中的所有文件。
12.2.6 使用 使用File类和 类和FileInfo类 类和 类 【例12-2】使用File类实现Access数据库文件的备份与 】 恢复(假设要备份的数据库文件为“工资管理系统 .mdb”,存放在“C:\”盘的根目录下)。 分析:了解Access数据库的读者都知道,Access数据 库文件是一个扩展名为.mdb的文件,使用上面介绍的 File File类的Copy方法,可以很容易实现数据库的备份与 Copy 恢复操作。通常情况下,可以使用.NET Framework提 供公共对话框或相关控件来获取备份与恢复的路径, 但因为公共对话框等相关控件不属于本书介绍的范畴 ,所以本例中,使用绝对的路径来实现Access数据库 文件的备份与恢复。文件的备份与恢复本质上都是一 样的,实现方法也一样,这里只介绍数据库文件备份 的实现,恢复部分留给读者自行实现。
12.2.3 使用 使用Directory类和 类和DirectoryInfo类 类和 类 【例12-1】练习使用Directory类和DirectoryInfo类来 】 创建、删除、移动、获取文件夹信息,获取当前应用 程序路径。
12.2.4 File类 类 本节介绍的File类,同样位于System.IO命名空间中,它拥 有创建、移动和检索文件与子文件的静态方法。 1. Create方法 方法 Create方法用于创建文件,其语法格式为: File.Create(<创建文件的路径和文件名>) 2. Delete方法 方法 Delete方法用于删除文件,其语法格式为: File.Delete(<要删除文件的路径和文件名>) 3. Copy方法 方法 Copy方法用于将文件复制到目标位置,其语法格式为: File.Copy(<被复制文件的路径及名称>, <复制到的目的路 径及名称>, <是否覆盖目标文件>)
12.4 二进制文件
如果文件中的数据是以二进制格式编码来存储的,此时就把这 样的文件称为二进制文件,它允许用户以字节为单位对其进行 读写操作。 12.4.1 读二进制文件 二进制文件的读取要用到FileStream类,其中有两个用于读取数 据的方法:ReadByte方法和Read方法。 ReadByte方法从流中读取一个字节,把结果转换成一个0~255 之间的整数值,如果到达了流的末尾,则返回-1。 Read方法可以一次读取多个字节,它返回的是实际读取的字节 数,如果到达了流的结尾,则返回0。使用Read方法的一般形式 为: read(<字符数组>, <填充位置>, <读取量>)
6. Exists方法 方法 Exists方法用于判断文件夹是否存在,返回值为一个bool常 量。其语法格式为: Directory.Exists(<文件夹路径及名称>) 7. GetParent方法 方法 GetParent方法用于获取当前文件夹的父文件夹。它有很多 子属性,如Name表示父文件夹的名称等。其语法格式为 : Directory.GetParent(<文件夹路径及名称>) 8. GetFiles方法 方法 GetFiles方法用于获取文件夹中的所有文件。它有许多子 属性,例如Length表示包含的文件个数等。其语法格式为 :
12.2 管理文件系统
文件系统的管理包括文件夹的管理和文件的管理,在 Visual C# 2005中,主要使用Directory类、 DirectoryInfo类、File类、FileInfo类来实现对文件夹 和文件的创建、删除、复制和移动等操作。 12.2.1 Directory类 类 1. CreateDirectory方法 方法 CreateDirectory方法用于创建新的文件夹,其语法格 式为: Directory.CreateDirectory(<创建的路径及文件夹的名 称>)
2. Delete方法 方法 Delete方法用于删除文件夹,其语法格式为: Directory.Delete (<删除的路径及文件夹的名称>, <是否删除文件 夹中的所有内容>) 3. Move方法 方法 Move方法用于移动文件夹,其语法格式为: Directory.Move (<原路径>, <目标路径>) 4. GetCurrentDirectory方法 方法 GetCurrentDirectory方法用于获取当前应用程序的路径。其语 法格式为: Directory.GetCurrentDirectory() 5. GetLogicalDrives方法 方法 GetLogicalDrives 方法用于获取当前计算机所有逻辑驱动器的名 称。因为一般来说,计算机的逻辑驱动器不止一个,所以必须 使用字符串数组来接收获取得到的值。其语法格式为: Directory.GetLogicalDrives()
表12-1 文件操作的常用类
文件操作的常用类 File FileInfo Directory DirectoryInfo Path FileStream StreamReader StreamWriter 说明 提供用于创建、复制、删除、移动和打开文件的静 态方法,并可协助创建FileStream对象 提供用于创建、复制、删除、移动和打开文件的实 例方法,并可协助创建FileStream对象 提供用于创建、移动和检索文件夹与子文件夹的静 态方法 提供用于创建、移动和检索文件夹与子文件夹的实 例方法 提供用于操作路径的静态方法 文件流,用于对文件进行打开、读取、写入和关闭 等操作 专用于打开文本文件 专用于写入文本文件
12.1Байду номын сангаас文件操作的类
在Visual C# 2005中,有很多与文件操作有关的类,它 们位于System.IO命名空间中,使用这些类时,必须先 引入System.IO命名空间,代码如下: //**************************************************** ****************************************** using System.IO; //**************************************************** ******************************************
12.5 文本文件
在Visual C# 2005中,可以使用StreamReader类和 StreamWriter类来读写文本文件,它们是专门针对文 本文件设计的,因而会比使用FileStream类更方便。 12.5.1 读取文本文件 StreamReader类专门用于读取文本文件,它的构造函 数有多个重载,其中最常用的一种形式如下: public StreamReader(string path, Encoding encoding)
说明: 说明:<是否覆盖目标文件>为一个逻辑值,即true或false ,为true时表示覆盖目标文件,为false时表示不覆盖目标 文件;若复制的目的路径中存在该文件,则抛出异常。 4. Exists方法 方法 Exists方法用于判断文件是否存在,其语法格式为: File.Exists(<文件的路径及名称>) 5. Move方法 方法 Move方法用于移动文件,它与Directory类的Move方法有 所不同,File类的Move方法可以在不同的盘符下进行(如 从D盘移到C盘),其语法格式为: File.Move(<被移动文件的路径及名称>, <移动目的路径及 名称>)
12.3 流
在Visual C# 2005中,流(Stream)是一个抽象类,它同样也位于 System.IO命名空间中,Stream类有一些派生类,例如表示文件流的 FileStream类、表示内存流的MemoryStream类、表示网络流的 NetWorkStream类。 通俗地讲,流是一个用于传输数据的对象,数据的传输一般有两个方 向: (1)数据从外部源传输到程序中,这种流称为读取流。 (2)数据从程序中传输到外部源,这种流称为写入流。 流一般具有以下几个基本操作: (1)读(Read)操作:读出流对象中的数据,并把它存放到另外一个 数据结构中。 (2)写(Write)操作:从另一种数据结构中读取数据并存放到流对 象中。 (3)搜索(Seek)操作:从流中的当前位置开始搜索定位到指定的位 置。
12.2.2 DirectoryInfo类 类 通常情况下,DirectoryInfo类与Directory类能完成相 同的工作。但两者是有本质区别的,Directory类提供 的是一些静态方法;而DirectoryInfo类提供的是实例 方法。 Directory类是一个实用类,每次调用Directory类的方 法时,都需要使用参数来指定当前操作是针对哪个文 件夹来操作的。而DirectoryInfo类则不同,在使用 new关键字来创建DirectoryInfo类的实例时,指定参 数调用其构造函数进行初始化,即指定了操作对象。
相关文档
最新文档