




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计(Visual C# .NET),云南省旅游职业学院信息技术系 王 元 安 2012年4月,第7章 目录与文件管理,7.1 系统环境相关类 7.2 目录管理 7.3 文件管理 7.4 文件的读写 7.5 FileSystemWatcher组件,7.1 系统环境相关类,.NET框架下,与操作系统环境相关的类有两个。 1. Environment类 该类除了提供当前环境和操作系统平台相关的信息外,还提供了获取本地逻辑驱动器和特殊文件夹的方法。 2. DriveInfo类 提供了本地驱动器相关的详细信息。,7.1.1 Environment类,提供有关当前环境和平台的信息以及操作它们
2、的方法。无法继承此类。 命名空间: System程序集: mscorlib(在 mscorlib.dll 中) 1.常用的属性和方法 CurrentDirectory属性 OSVersion属性 NewLine属性 Version属性 GetLogicalDrives方法 GetFolderPath方法,Environment 成员属性,Environment 成员方法,Environment 类应用举例,项目演示: EnvironmentSample 内容:演示Environment类属性与方法的使用,7.1.2 DriveInfo类,使用DriveInfo可以确定当前可用的驱动器以及这些驱
3、动器的类型,还可以通过查询来确定驱动器的容量和剩余空间。,项目演示: DriveInfoSample 内容:演示DriveInfo类属性与方法的使用,7.2 目录管理,在System.IO命名空间中,.NET框架提供了3种对目录进行管理的类,分别是Directory类、DirectoryInfo类和Path类。 7.2.1 Directory类和DirectoryInfo类 区别:Directory类(只提供静态方法)只用一次 DirectoryInfo类(需要实例化才能使用)多次使用 DirectoryInfo类的构造函数形式如下: public DirectoryInfo( string
4、path); 参数path表示目录所在的路径。例如: DirectoryInfo dirInfo = new DirectoryInfo(e:temp); 注意:(1)path是合法的路径。 (2)用System.Environment.SpecialFolder下的枚举可以获取特殊文件夹路径。,目录管理属性与方法,2.DirectoryInfo类的主要属性 Exists FullName Parent CreationTime 3.Directory类提供的静态方法 CreateDirectory Delete Move Exists GetCurrentDirectory,将 Direct
5、oryInfo 类用于典型操作,如复制、移动、重命名、创建和删除目录。 如果打算多次重用某个对象,可考虑使用 DirectoryInfo 的实例方法,而不是 Directory 类的相应静态方法,因为并不总是需要安全检查。,DirectoryInfo 成员,11,12,13,Directory 静态方法,7.2.2 Path类,1. Path类用于对包含文件或目录路径信息的String实例执行操作。 2. 常用方法: GetDirectoryName方法 GetExtension方法 GetFileName方法 GetFileNameWithoutExtension方法 GetFullPath
6、方法,15,对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。 Path 类型公开了以下成员。,Path类方法,16,Path类字段,17,下面的代码示例演示 Path 类的某些主要成员。,using System; using System.IO; class Test public static void Main() string path1 = c:tempMyTest.txt; string path2 = c:tempMyTest; string path3 = temp; if (Path.HasExtension(path1) Consol
7、e.WriteLine(0 has an extension., path1); if (!Path.HasExtension(path2) Console.WriteLine(0 has no extension., path2); if (!Path.IsPathRooted(path3) Console.WriteLine(The string 0 contains no root information., path3); Console.WriteLine(The full path of 0 is 1., path3, Path.GetFullPath(path3); Consol
8、e.WriteLine(0 is the location for temporary files., Path.GetTempPath(); Console.WriteLine(0 is a file available for use., Path.GetTempFileName(); ,7.2.3 目录的创建、删除和移动,1.创建目录 Directory类的CreateDirectory方法用于创建指定路径中的所有目录。 public static DirectoryInfo CreateDirectory (string path)其中参数path为要创建的目录路径。 举例: Dire
9、ctory.CreateDirectory(c:test); Directory.CreateDirectory(c:testt1t2);,7.2.3 目录的创建、删除和移动,2.删除目录 Directory类的Delete方法用于删除指定的目录,常用的方法原型为 public static void Delete(string path, bool recursive) 其中:path参数不区分大小写,可以是相对于当前工作目录的相对路径,也可以是绝对路径。recursive是一个布尔值,如果要移除path中的目录(包括所有子目录和文件),则为true;否则为false。,7.2.3 目录的创
10、建、删除和移动,3.移动目录 Directory类的Move方法能够重命名或移动目录。方法原型为 public static void Move (string sourceDirName, string destDirName) 其中,sourceDirName为要移动的文件或目录的路径;destDirName为新位置的目标路径。 注意: destDirName参数指定的目标路径应为新目录。,DirectoryInfo项目演示1,21,项目演示: DirectoryInfoSample1 内容:演示了 DirectoryInfo 类的某些主要成员。,DirectoryInfo与Directo
11、ry类的使用项目演示2,22,项目演示: CopyDirFormSample 内容:示例演示Directory和DirectoryInfo类的使用方法 ,如何复制目录及其内容。,23,Path类的使用项目演示2,项目演示: PathSample 内容:示例演示Path类的使用方法 ,如何复制目录及其内容。,7.2.4 FolderBrowserDialog对话框,FolderBrowserDialog对话框以树形控件的形式将指定路径的文件夹及其子文件夹显示出来,供用户浏览、创建或选择。 调用FolderBrowserDialog的ShowDialog方法,可以打开对话框,如果用户在对话框中单击
12、【确定】按钮,则对话框返回结果为DialogResult.OK,否则为DialogResult.Cancel。,7.2.4 FolderBrowserDialog控件,作用:提示用户选择文件夹。无法继承此类。 命名空间: System.Windows.Forms程序集:System.Windows.Forms(在 System.Windows.Forms.dll 中) FolderBrowserDialog控件的主要属性 :,26,FolderBrowserDialog控件的使用项目演示,项目演示: FolderBrowserDialogSample FolderBrowserDialogSa
13、mple 2 内容:下面的代码示例创建一个应用程序,用户使用该应用程序可以打开 RichTextBox 控件中的多格式文本 (.rtf) 文件。,7.3 文件管理,System.IO命名空间中文件操作类: (1)File (2)FileInfo 相同点:都能完成对文件的复制、移动、重命名、创建、打开、删除和追加到文件操作。 不同点:FileInfo类提供实例化后的属性、方法 File 只提供静态方法 用法与Directory和DirectoryInfo相似。,28,File 类属性与方法,提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。 命名空间:
14、System.IO程序集: mscorlib(在 mscorlib.dll 中),下表描述了用于自定义各种 File 方法的行为的枚举。,29,30,31,32,33,7.3.1 文件复制、删除与移动,File类 (1)判断文件是否存在 调用File类的Exist方法可以判断是否存在指定的文件。 (2)复制文件 Copy (sourceFileName, destFileName,bool overwrite) (2) 删除文件 Delete (string path) (3) 移动文件 Move (sourceFileName, destFileName) 注意:Move方法不提供创建目录的
15、功能,要确保存在目标文件目录。,7.3.2 文件属性,1.设置或获取属性 (1) 对File类:用SetAttributes方法,GetAttributes方法设置、获取。 (2) 对FileInfo类:用Attributes属性设置、获取。 (3)注意: FileAttributes的每个枚举值代表目录或者文件的一个属性,各个枚举值是按照2的幂排列的,即依次为20,21,22, 23 , 2.可以利用“与”、“或”操作设置或获取单个属性。,7.3.2 文件属性与设置(续),2.判断某个路径是目录还是文件 下面的代码演示了如何判断某个路径是目录还是文件: if (File.GetAttribu
16、tes(path) ,7.3.4 OpenFileDialog控件和SaveFileDialog,1. 功能:用于显示用户打开文件的对话框。 2. 常用属性:,3. 常用方法:ShowDialog(),7.3.4 OpenFileDialog控件和SaveFileDialog,1.SaveFileDialog用于显示保存文件对话框,提示用户选择文件的保存位置。 2.调用SaveFileDialog的ShowDialog方法,将打开【另存为】对话框,如果用户在对话框中单击【保存】按钮,则保存该文件,并返回DialogResult.OK,否则返回DialogResult.Cancel。,【例7-1
17、】利用FolderBrowerDialog、OpenFileDialog和SaveFileDialog对话框,设计一个Windows应用程序,实现将文件从一个目录复制到另一个目录的功能。,对话框控件综合举例,40,private void buttonFileBrower_Click(object sender, EventArgs e) OpenFileDialog ofd = new OpenFileDialog(); string sfn=Application.StartupPath+; ofd.InitialDirectory = sfn;/ d:1234567; if (ofd.S
18、howDialog() = DialogResult.OK) textBoxSourcePath.Text = ofd.FileName; private void buttonDirBrower_Click(object sender, EventArgs e) FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() = DialogResult.OK) textBoxTargetDir.Text = fbd.SelectedPath; ,7.4 文件的读写,在System.IO命名空间中,提供了多种
19、类用于进行数据文件和数据流的读写操作。 主要有: 1. 文件编码,提供了多种编码。 2. 文本文件的读写。 3. 二进制文件的读写。,7.4.1 文件的编码,1.文件编码 常见的文件编码方式有ASCII编码、Unicode编码、UTF8编码和ANSI编码。 2.在System.Text命名空间中,有一个Encoding类,用于表示字符编码。对文件进行操作时,常用的编码方式有 Encoding.Default表示操作系统的当前ANSI编码 Encoding.UnicodeUnicode编码 Encoding.UTF8UTF8编码,7.4.2 文本文件的读写,File类提供了非常方便的读写文本文件
20、的方法。 1ReadAllText方法和AppendAllText方法 ReadAllText方法打开一个文件,读取文件的每一行,将每一行添加为字符串的一个元素。然后关闭文件。 常用原型为 public static string ReadAllText(string path, Encoding encoding) AppendAllText方法用于将指定的字符串追加到文件中,如果文件不存在则自动创建该文件,常用原型为 public static void AppendAllText(string path, string contents, Encoding encoding),7.4.2
21、 文本文件的读写,2、ReadAllLines方法和WriteAllLines方法 ReadAllLines方法打开一个文本文件,将文件的所有行都读入一个字符串数组,然后关闭该文件。 WriteAllLines方法创建一个新文件,在其中写入指定的字符串数组,然后关闭文件。如果目标文件已存在,则覆盖该文件 3StreamReader类和StreamWriter类 流是字节序列的抽象概念。流也是进行数据读取操作的基本对象,流提供了连续的字节流存储空间。 流有如下几种操作。 读取:从流中读取数据到变量中。 写入:把变量中的数据写入到流中。 定位:重新设置流的当前位置,以便随机读写。,7.4.2 文本
22、文件的读写,StreamReader类提供了利用流来按行读取文本文件信息的方法。如果不指定编码,StreamReader的默认编码为UTF-8,而不是当前系统的ANSI编码。 StreamWriter类提供了按行写入文本信息的方法。与StreamReader类似,如果不指定编码,StreamWriter默认使用UTF-8编码,而不是当前系统的ANSI编码。 File类的Open方法先创建一个FileStream对象,然后使用FileStream对象对文件进行读取、写入、打开和关闭操作。,7.4.3 二进制文件的读写,例7-2:将随机产生的二进制数据写入文件,并验证写入结果是否正确。 Rando
23、m r = new Random(); byte writeArray = new byte10; /用随机数填充指定字节数组的元素 r.NextBytes(writeArray); Console.WriteLine(数组中的数据:); for (int i = 0; i writeArray.Length; i+) Console.WriteLine(w0=1, i, writeArrayi); ,7.4.3 二进制文件的读写,/将数据写入到文件,文件关闭前不允许其他进程操作该文件 FileStream fs = new FileStream(test.bin, FileMode.Open
24、OrCreate, FileAccess.Write, FileShare.None); BinaryWriter bw = new BinaryWriter(fs); Console.WriteLine(正在写数据); for (int i = 0; i writeArray.Length; i+) bw.Write(writeArrayi); bw.Close(); fs.Close(); Console.WriteLine(数据已写入到文件test.bin中);,7.4.3 二进制文件的读写,/从文件中读取二进制数据 Console.WriteLine(文件test.bin的内容如下:)
25、; fs = new FileStream(test.bin, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs, System.Text.Encoding.Default); Console.WriteLine(br.ReadByte(); while (br.PeekChar() != -1) Console.WriteLine(br.ReadByte(); br.Close(); fs.Close(); Console.ReadLine();,7.5 FileSystemWatcher组件,组件功
26、能 用于监视本地计算机、网络驱动器或远程计算机上的文件。 常用属性 Filter : 文件筛选模式,确定监视哪些文件 Path :要监视的目录路径 NotifyFilter:要监视的更改类型 EnableRaisingEvents :是否启用组件 常用事件 Changed、Created、Deleted、Renamed 举例说明,FileSystemWatcher组件举例,【例7-3】演示FileSystemWatcher组件的用法。,51,文件和流,C#把每个文件当作顺序字节流处理。每个文件可以文件结束标记(EOF)结束,也可在指定字节数结束。当文件被打开时,C#会创建一个对象,然后把流和对
27、象关联起来。 在C#中进行文件处理,需要引入System.IO命名空间,这个命名空间包括流类的定义,例如: StreamReader:用于从文件中输入文本 StreamWriter:用于输出文本到文件中 FileStream:用于文件输入输出 C#中包含许多执行输入输出的类。本课主要介绍StreamReader和StreamWriter类,文件结束标记,52,7.1 File和Directory类,计算机中的信息存储在文件中,而文件存放在目录(Windows称之为文件夹)中。File类用于操纵文件,Directory类用于操纵文件夹。File类不能直接读写文件,需要使用FileStream类或
28、其派生类。 下面两页列出了File类和Directory类中的部分方法。 你也可以使用对象浏览器来了解这两个类中的成员。注意了解这些方法如何使用。,53,7.1.1 File类,54,File类示例,示例代码位于“CSharp示例第8课FileSample”,55,获取文件信息代码,string output = 文件信息:rn; string filename = txtFileName.Text; if (File.Exists(filename) output +=t文件名:+filename+rn; output +=t创建时间: + File.GetCreationTime(file
29、name) + rn; output +=t最后修改时间:+File.GetLastWriteTime(filename)+rn; output +=t最后访问时间:+File.GetLastAccessTime(filename)+rn; txtFileInfo.Text = output; else txtFileInfo.Text+=rnt文件+filename+不存在!rn; ,56,复制文件代码,string filename1 = txtFileName1.Text; string filename2 = txtFileName2.Text; if (File.Exists(fil
30、ename1) try File.Copy(filename1,filename2,true); MessageBox.Show(文件复制成功!,复制成功); catch MessageBox.Show(复制出错!可能是源文件无法读取或目标文件名错误!, 复制出错, MessageBoxButtons.OK,MessageBoxIcon.Error); else MessageBox.Show(源文件+filename1+不存在!,复制出错, MessageBoxButtons.OK,MessageBoxIcon.Exclamation); ,57,7.1.2 Directory类,58,Di
31、rtectory类示例,示例代码位于“CSharp示例第8课DirectorySample”,59,获取文件夹中的文件代码,string directoryName = txtDirName.Text; string output = ; if ( Directory.Exists(directoryName) / 获取文件夹中的子文件夹名称 string directoryList = Directory.GetDirectories(directoryName); foreach( string dirName in directoryList) output+=文件夹 +dirName+rn; string fileList = Directory.GetFiles(directoryName); foreach( string fileName in fileList) output+=文件 +fileName+rn; txtInfo.Text = output; / 后面还有,60,获取文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代做餐饮培训
- 中国2025年市场展望与薪酬报告
- 2024年农业职业经理人数字营销试题及答案
- 会计专业核心课程
- 宠物驱虫考试题及答案大全
- 初三政治课程内容
- 肩颈专业知识培训课件
- 职工健康知识培训课件
- 调酒师的情绪管理与调控题及答案
- 美甲甲床知识培训课件
- 济宁港主城港区跃进沟航道工程项目一期工程导助航及监控系统施工招标文件
- 国开学习网电大数据库应用技术第四次形考作业实验答案
- 公司与公司签订劳务合同范本
- 第十四讲 建设巩固国防和强大人民军队PPT习概论2023优化版教学课件
- 五年级下册语文第五单元《形形色色的人》习作一等奖创新教学设计
- 色织物工艺设计2
- 液压系统符号
- 年会颁奖晚会颁奖盛典简约PPT模板
- 绥江县农村饮水安全工程水质检测中心建设方案
- 钳工-实操技能试题
- GB/T 33474-2016物联网参考体系结构
评论
0/150
提交评论