《c#第七章 目录与文件管理》由会员分享,可在线阅读,更多相关《c#第七章 目录与文件管理(37页珍藏版)》请在金锄头文库上搜索。
1、第7章 目录与文件管理,7.1 系统环境相关类7.2 目录管理7.3 文件管理7.4 文件的读写7.5 FileSystemWatcher 组件,7.1 系统环境相关类,.NET框架下,可通过下面的类获得一些系统环境的相关信息。1. Environment 类 该类提供当前环境和操作系统平台的相关信息,还提供了获取本地逻辑驱动器和特殊文件夹的方法。2. DriveInfo 类 提供了本地驱动器相关的详细信息。,7.1.1 Environment 类,常用的属性和方法 CurrentDirectory 属性:当前路径 OSVersion 属性:操作系统版本 NewLine 属性:获取当前环境的换
2、行字符串 UserNmae 属性:当前登录到操作系统的用户 GetLogicalDrives 方法:计算机中逻辑驱动器名称的字符串数组。 GetFolderPath 方法:返回系统特殊文件夹的路径,如“我的电脑”,7.1.2 DriveInfo类,使用 DriveInfo 可以确定当前可用的驱动器以及这些驱动器的类型还可以通过查询来获得驱动器更详细的数据,如容量和剩余空间等。书中 P154 给出了一些这两个类使用的例句,大家上机时可以试试,课上就不演示了。,7.2 目录管理,在 System.IO 命名空间中,.NET 框架提供了 3 种对目录进行管理的类,分别是 Directory 类、Di
3、rectoryInfo 类和 Path 类。Directory 类和 DirectoryInfo 类都可以用来对磁盘目录进行操作,如新建目录。Path 类是对包含文件或目录路径信息的字符串做操作。,7.2.1 Directory 和 DirectoryInfo 类,区别:Directory 类:只提供静态方法DirectoryInfo 类:需要实例化才能使用DirectoryInfo 类的构造函数形式如下:public DirectoryInfo( string path); 参数 path 表示目录所在的路径。例如: DirectoryInfo dirInfo = new Directory
4、Info(e:temp); 注意:path 参数必须是合法的路径,也可用 System.Environment.SpecialFolder 下的枚举来获取特殊文件夹路径。,DirectoryInfo 类的主要属性,Exists:返回目录是否存在的 Bool 值FullName:当前路径的完整目录名Parent:获得上级目录CreationTime:获取或设置当前目录的创建时间。Root:获取根目录Attibutes:获取或设置当前目录属性,如只读,可利用 FileAttibutes 类提供的常量,如FileAttibutes.ReadOnly,Directory 类提供的静态方法,注意: Di
5、rectory 只提供了方法,这些方法都是静态方法,通过类名直接调用。利用这些方法进行可以建立、删除、移动目录等操作,一般需指定目录参数。CreateDirectoryDeleteMoveExistsGetCurrentDirectory更多的方法见 P155 表 7-3,7.2.2 Path 类,Path 类用于对包含文件或目录路径信息的String 实例执行操作。注意:Path 可以仅仅是一个路径,也可以是路径及文件名。2. 常用方法:GetDirectoryName方法GetExtension方法GetFileName方法:文件名和扩展名GetFileNameWithoutExtensi
6、on方法GetFullPath方法,7.2.3 目录的创建、删除和移动,1.创建目录Directory类的CreateDirectory方法用于创建指定路径中的所有目录。public static DirectoryInfo CreateDirectory (string path) 其中参数 path 为要创建的目录路径。举例:Directory.CreateDirectory(c:test);Directory.CreateDirectory(c:testt1t2);,2. 删除目录,Directory 类的 Delete 方法用于删除指定的目录常用的方法原型为:public static
7、 void Delete(string path, bool recursive)其中:path 参数不区分大小写,可以是相对于当前工作目录的相对路径,也可以是绝对路径。recursive 是一个布尔值,如果要移除 path 中的目录(包括所有子目录和文件),则为true;否则为false。,3.移动目录,Directory 类的 Move 方法能够重命名或移动目录。方法原型为:public static void Move (string sourceDirName, string destDirName)其中:sourceDirName 为要移动的文件或目录的路径;destDirName
8、为新位置的目标路径。注意: destDirName 参数指定的目标路径应为新目录,如果目标目录已存在,会导致异常。,7.2.4 FolderBrowserDialog 对话框,FolderBrowserDialog 对话框是系统提供的标准对话框之一,用来选择一个目录。以树形控件的形式将指定路径的文件夹及其子文件夹显示出来,供用户浏览、创建或选择。调用 FolderBrowserDialog 的 ShowDialog 方法可以打开对话框。如果用户在对话框中单击“确定”按钮,则返回 DialogResult.OK,否则为 DialogResult.CancelSelectedPath 属性可获得用
9、户选择的路径,7.2.4 FolderBrowserDialog,FolderBrowserDialog 的主要属性 :,7.3 文件管理,System.IO 命名空间中文件操作类:(1)File (2)FileInfo相同点:都能完成对文件的复制、移动、重命名、创建、打开、删除和追加到文件操作。不同点:FileInfo 类提供实例化后的属性、方法,而 File 只提供静态方法。用法与 Directory 和 DirectoryInfo 相似。通常与 Path 对象配合使用,7.3.1 文件操作,一般利用 File 类提供的方法对文件进行操作。判断文件是否存在:调用File 类的 Exist
10、方法可以判断是否存在指定的文件。复制文件:File.Copy (sourceFileName, destFileName, bool overwrite)删除文件:File.Delete (string path)移动文件: File.Move (sourceFileName, destFileName) 注意:Move方法不提供创建目录的功能,要确保存在目标文件目录。,例如,下面的代码在文件原路径下复制了一个备份:string path1 = c:tempMyTest.txt;string path2 = c:tempMyTestBack.txt; System.IO.File.Copy(p
11、ath1, path2, true);,7.3.2 文件属性的设置与获取,(1) 对 File 类:用 SetAttributes 方法,GetAttributes 方法设置、获取。 (2) 对 FileInfo 类:用 Attributes 属性设置、获取。注意:FileAttributes 的每个枚举值代表目录或者文件的一个属性,各个枚举值是按照2的幂排列的,即依次为20,21,22, 23 2.可以利用“与”、“或”操作设置或获取单个属性。,7.3.2 文件属性与设置(续),判断某个路径是目录还是文件:下面的代码演示了如何判断某个路径是目录还是文件:if ( File.GetAttrib
12、utes(path) ,7.3.4 OpenFileDialog 和 SaveFileDialog,OpenFileDialog :显示打开文件对话框。常用属性:,3. 常用方法:ShowDialog(),7.3.4 OpenFileDialog 和 SaveFileDialog,SaveFileDialog 用于显示保存文件对话框,提示用户选择文件的保存位置。调用SaveFileDialog 的 ShowDialog 方法,将打开【另存为】对话框。如果用户在对话框中单击【保存】按钮,则保存该文件,并返回 DialogResult.OK,否则返回DialogResult.Cancel。,【例7
13、-1】利用FolderBrowerDialog、OpenFileDialog 和 SaveFileDialog 对话框,设计一个 Windows 应用程序,实现将文件从一个目录复制到另一个目录的功能。注意:运行前需要在相关盘符下事先建立一个 temp 文件夹,对话框控件综合举例,7.4 文件的读写,在 System.IO 命名空间中,提供了多种类用于进行数据文件和数据流的读写操作。 主要有: 1. 文件编码,提供了多种编码。 2. 文本文件的读写。 3. 二进制文件的读写。,7.4.1 文件的编码,1.文件编码常见的文件编码方式有ASCII 编码、Unicode 编码、UTF8 编码和 ANS
14、I 编码。2.在System.Text 命名空间中,有一个Encoding类,用于表示字符编码。对文件进行操作时,常用的编码方式有:Encoding.Default:操作系统的当前ANSI 编码Encoding.Unicode:Unicode编码Encoding.UTF8:UTF8编码,网页经常使用,将一个 Unicode 字符编为 1-4 个字节。,7.4.2 文本文件的读写,文本文件是没有任何格式,只记录表示文件内容字符的文件,如 *.txt 文件。File 类提供了非常方便的读写文本文件的方法。主要有下列方法: ReadAllText AppendAllText ReadAllLines
15、 WriteAllLines,ReadAllText 方法,ReadAllText 方法打开一个文件,读取文件的每一行,将其添加为字符串的一个元素。读取结束后关闭文件。常用原型为: public static string ReadAllText(string path, Encoding encoding)其中:path 为文件路径, encoding 为编码方式,无法自动检测出汉字的 UTF-8 编码,一般可以指定为 Encoding.Default 。,AppendAllText 方法,AppendAllText 方法用于将指定的字符串追加到文件中。如果文件不存在则自动创建该文件。常用原型为: public static void AppendAllText (string path, string contents, Encoding encoding)其中参数 contents 为追加到文件的字符串。,ReadAllLines 和 WriteAllLines 方法,ReadAllLines 方法打开一个文本文件,将文件的所有行都读入一个字符串数组,然后关闭该文件。根据回车换行来确定一行,实际是一“段”WriteAllLines 方法创建一个新文件,在其中写入指定的字符串数组,然后关闭文件。如果目标文件已存在,则覆盖该文件。,7.4.2 文本文件的读写:流,