版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章文件操作预习检查FileMode是个什么类型的数据?使用File类需要实例化吗?用C#程序读写一个文件需要哪些基本步骤?StreamWriter类的作用是什么?静态类和非静态类的区别有哪些?集中测试2/44回顾与作业点评解析XML文件,在控制台输出相应信息点评作业的提交情况和共性问题<?xmlversion="1.0"encoding="utf-8"?><musicShop><music><title>双截棍</title><signer>周杰伦</signer></music><music><title>SuperStar</title><signer>S.H.E</signer></music></musicShop>现场编程3/44作业点评本章任务实现文本读写器通过读写文件实现“网络电视精灵”保存功能保存用户定制的电视频道启动程序时,加载定制的频道实现小型资源管理器系统启动时,加载定制的电视台4/44本章目标掌握文本文件的读写会进行文件和文件夹操作5/44为什么需要操作文件如何使得程序中的数据持久化?用数据库实现成本太大适用于大批量数据使用文件对数据进行持久化,用程序操作文件问题分析6/44文件的应用场合计算机上有多种文件可以保存数据这些文件你都熟悉吧?扩展网络电视精灵,保存我的电视台问题7/44如何读写文本文件读写一个文件的步骤创建一个文件流创建相应的读写器(readerandwriter)执行读写操作关闭读写器(readerandwriter)关闭文件流123458/44读写文本文件应用实现文本文件读写器将文本框的内容写入Text.txt文件问题演示示例1:文本读写器9/44创建文件流
FileStream
myfs=newFileStream(stringpath,
FileModemode);指定文件路径FileMode枚举Create:创建一个新文件。如果文件存在,则改写旧文件Open:指定打开现有文件。指定的文件必须存在,否则会发生异常CreateNew:新建一个文件。如果文件存在会发生异常,提示文件已经存在Append:打开现有文件追加指定如何打开文件引入System.IO命名空间—提供文件操作的类文件流(FileStream类)用于读写文件语法10/44常见错误阅读如下代码,是否能正确运行?stringpath="D:\Text.txt";FileStreamfs=newFileStream(path,FileMode.Create);代码阅读stringpath="D:\\Text.txt";stringpath=@"D:\Text.txt";11/44创建写入器和读取器文本文件写入器:StreamWriter
StreamWritermySw=newStreamWriter(myfs);mySw.Write(content);
mySw.WriteLine(content);传入文件流写入方法文本文件读取器:StreamReader写入一行数据的方法
StreamReadermySr=newStreamReader(myfs);content=mySr.ReadToEnd();
content=mySr.ReadLine();传入文件流读取到文件末尾读取一行12/44将数据写入文本文件写入文本文件
FileStreammyfs=newFileStream(path,FileMode.Create);StreamWritermySw=newStreamWriter(myfs);mySw.Write(content);mySw.Close();myfs.Close();创建一个文件流创建写入器写入操作关闭示例演示示例2:写入文本文件13/44
FileStreammyfs=newFileStream(path,FileMode.Create);StreamWritermySw=newStreamWriter(myfs);mySw.Write(content);myfs.Close();mySw.Close();常见错误阅读如下代码,是否能正确运行?代码阅读如果一个程序用了多个流、读写器,它们的关闭顺序一般要和自身在程序中被创建的顺序相反经验14/44读取文本文件读取文本文件使用OpenFileDialog控件显示打开文件的窗口this.ofdMain.ShowDialog();
stringpath=ofdMain.FileName;
stringcontent;//……FileStreammyfs=newFileStream(path,FileMode.Open);StreamReadermySr=newStreamReader(myfs);content=mySr.ReadToEnd();txtContent.Text=content;mySr.Close();myfs.Close();创建一个文件流创建读取器将流从当前位置读到末尾关闭选择文件示例演示示例3:读取文本文件15/44解决读取时中文乱码读取包含中文的TXT文件时,可能出现中文乱码FileStreammyfs=newFileStream(path,FileMode.Open);//读取器StreamReadermySr=newStreamReader(myfs,Encoding.Default);
content=mySr.ReadToEnd();txtContent.Text=content;//……默认使用Unicode字符,设置Encoding改变默认设置Encoding.UTF8或Encoding.Default或Encoding.GetEncoding("XXX")问题示例演示示例4:使用Encoding解决中文乱码16/44学员操作—定制信息写入文本文件2-1训练要点文本文件写入需求说明将定制的频道信息写入文本文件save.txt写入格式:频道类型|电视台名称|节目单存储路径TypeA|北京电视台|files/北京电视台.xml指导讲解需求说明17/44学员操作—定制信息写入文本文件2-2实现思路编写SaveAsText()方法,实现将定制的频道信息存入.txt文件编写主窗体的FormClosed的事件,调用SaveAsTxt()方法各写入项间隔符的“|”可以换做其他符号必须保证这个符号不是写入项中的内容比如“/”指导提示完成时间:20分钟18/44学员操作—读取定制频道信息需求说明从文本文件save.txt读取定制的频道信息,并在主窗体运行时加载,最终实现定制频道信息的读取练习完成时间:25分钟19/44共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解20/44文件操作的应用文件操作还包括判断文件是否存在、复制、移动、删除等等文件的复制和删除问题将源文件复制到目标位置删除源文件21/44文件操作File类:提供操作文件的各种方法方法说明bool
Exists(stringpath)用于检查指定文件是否存在,该方法返回一个布尔值void
Copy(stringsourceFileName,
stringdestFileName)将指定路径的源文件中的内容复制到目标文件中,如果目标文件不存在,则在指定路径中新建一个文件void
Move(stringsourceFileName,
stringdestFileName)将指定文件移动到一个新的路径voidDelete(stringpath)删除指定的文件,如果指定的文件不存在,则不引发异常22/44文件操作示例//检查一个文件是否存在if(!File.Exists(this.txtFileName.Text)){MessageBox.Show("文件不存在");}else{//将源文件复制到一个新文件
File.Copy(this.txtFileName.Text,this.txtCopyName.Text);MessageBox.Show("复制成功!");}示例演示示例5:文件复制和删除23/44目录操作Directory类提供对文件夹的移动、删除等操作方法说明bool
Exists(stringpath)用于检查指定文件夹在磁盘上是否存在void
Move(stringsourceDirName,stringdestDirName)用于将文件或目录及其内容移到新位置void
Delete(stringpath,boolrecursive)删除指定目录,如果bool指定true,则删除子目录中的所有目录内容void
Delete(stringpath)从指定路径删除空目录24/44静态类与非静态类File类与Directory类publicstatic
classFilepublicstatic
classDirectory静态类静态类非静态类用static修饰不用static修饰只包含静态成员可以包含静态成员不可以包含实例成员可以包含实例成员使用类名调用静态成员使用实例对象调用非静态成员不能被实例化可以被实例化不能包含实例构造函数包含实例构造函数25/44静态成员静态成员:使用static修饰符class类名{publicstatic
数据类型变量名;publicstatic
返回值类型方法名(参数列表){
//方法体;}}静态成员变量静态成员方法,提供独立于特定对象之外的普遍功能静态成员为一个类的所有实体所共享,它属于类,而不属于类的某个对象!例如:太阳语法注意26/44静态成员的使用调用静态成员以前使用过的静态成员Console类实现控制台显示文本Math类获取π值类名.变量名=XX;//给变量赋值类名.方法名();//调用静态方法Console.WriteLine("你好!");Console.WriteLine(Math.PI);静态方法静态变量语法应用场合:当类不会有多个对象而更像是一个公用类的时候,或当方法或属性是“公用”信息的时候声明为静态的比较好!经验27/44常见错误阅读如下代码,是否能正确运行?publicclassStudent{publicstringname;publicintage;publicstaticstringcountry="China";}classProgram{staticvoidMain(string[]args){SayHi();
Studentstu=newStudent();Console.WriteLine("学生国籍:"
+stu.country);
}publicvoidSayHi(){Console.WriteLine("helloworld!");}}代码阅读静态方法只能调用静态方法静态成员只能由类名调用注意28/44静态成员与实例成员使用static修饰的成员称为静态成员使用实例对象调用的成员称为实例成员静态方法实例方法static关键字不需要static关键字使用类名调用使用实例对象调用可以访问静态成员可以访问静态成员不可以直接访问实例成员可以直接访问实例成员调用前初始化实例化对象时初始化29/4329/44FileInfofi=newFileInfo(@"D:\temp\FileInfo.txt");Console.WriteLine("文件是否存在:"+fi.Exists);Console.WriteLine("文件名:"+fi.Name);Console.WriteLine("文件目录名:"+fi.Directory.Name);fi.CopyTo("E:\\temp\\FileInfo.txt");属性/方法说明Exists用于检查指定文件是否存在,返回一个布尔值Extension获取表示文件扩展名部分的字符串Name获取文件名FullName获取目录或文件的完整目录FileInfoCopyTo(string)将现有文件复制到新文件,不允许覆盖现有文件void
Delete()永久删除文件voidMoveTo(string)将指定文件移到新位置提供实例方法的文件类FileInfo类示例经验应用场景:由于File类的静态方法在使用时都会进行安全检查,所以如果想要多次使用某个文件对象,可以考虑使用FileInfo类相应的实例方法,因为并不总是需要安全检查30/44方法说明DirectoryInfo[]GetDirectories()返回当前目录的子目录对象数组FileInfo[
]
GetFiles()返回当前目录下文件列表(FileInfo对象数组)提供实例方法的文件类DirectoryInfo类示例DirectoryInfodi=newDirectoryInfo(@"D:\test");//返回当前目录的子目录DirectoryInfo[]subDir=di.GetDirectories();//返回当前目录的文件列表FileInfo[
]
fi=di.GetFiles();经验应用场景:如果打算多次重用某个目录对象,可以考虑使用DirectoryInfo类的实例方法31/44文件操作综合应用3-1开发小型资源管理器,可以浏览文件信息显示选定文件夹下的文件列表显示D盘下文件夹结构问题32/44文件操作综合应用3-2绑定当前目录下子目录到TreeView中DirectoryInfodirectoryInfo=newDirectoryInfo(node.Tag.ToString());DirectoryInfo[]dirs=directoryInfo.GetDirectories();foreach(DirectoryInfodiindirs){TreeNodetemp=newTreeNode();temp.Text=di.Name;temp.Tag=di.FullName;node.Nodes.Add(temp);}D:\获取D:\的子目录遍历子目录,获取目录信息分析33/44FileInfo[]fileInfo=directoryInfo.GetFiles();
List<MyFile>files=newList<MyFile>();//MyFile类用来存储文件信息foreach(FileInfomyFileinfileInfo){MyFilefile=newMyFile();file.FileName=myFile.Name;
file.FileLength=myFile.Length;
file.FileType=myFile.Extension;
file.FilePath=myFile.FullName;files.Add(file);}文件操作综合应用3-3获取文件夹下文件列表获取某目录下所有文件文件名文件长度文件扩展部分的字符串完整目录分析演示示例6:小型资源管理器34/44学员操作—显示文件信息需求说明实现小型资源管理器,支持显示文件信息使用TreeView控件显示文件夹结构使用ListView控件显示选定文件夹下文件列表练习完成时间:25分钟35/44共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解36/44学员操作—实现文件复制2-1训练要点使用File类需求说明完善小型资源管理器,实现文件复制支持用户从“浏览文件夹”对话框选定目标位置方便用户选择文件复制目标位置指导讲解需求说明37/44学员操作—实现文件复制2-2打开“浏览文件夹”,并获得选择的存储路径FolderBrowserDialogfbd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会议后续跟踪与效果评估制度
- 2026年浙江大学杭州国际科创中心吴新科教授课题组招聘备考题库及答案详解参考
- 2026年浙江大学爱丁堡大学联合学院方兆元课题组科研助理招聘备考题库及1套参考答案详解
- 企业设备管理规范制度
- 中学学生社团活动经费管理流程制度
- 2026年湘潭市九华中学(长沙市一中九华中学)代课教师招聘备考题库完整答案详解
- 2026年榆林市第五幼儿园招聘备考题库及参考答案详解1套
- 2026年钟祥市国有企业公开招聘工作人员16人备考题库完整答案详解
- 2026年玉环公证处招聘备考题库及一套答案详解
- 2026年河南姚孟能源投资有限公司招聘备考题库及参考答案详解一套
- 人工智能推动金融数据治理转型升级研究报告2026
- 2026长治日报社工作人员招聘劳务派遣人员5人备考题库含答案
- 期末教师大会上校长精彩讲话:师者当备三盆水(洗头洗手洗脚)
- 2026年潍坊职业学院单招综合素质笔试备考试题附答案详解
- 工兵基础知识课件
- 2026年贵州省交通综合运输事务中心和贵州省铁路民航事务中心公开选调备考题库及答案详解参考
- 2025四川雅安市名山区茗投产业集团有限公司招聘合同制员工10人参考题库附答案
- 人工智能应用与实践 课件 -第5章-智能体开发与应用
- 2025浙江绍兴越城黄酒小镇旅游开发有限公司编外人员第二次招聘总笔试历年典型考点题库附带答案详解2套试卷
- 人教版三年级上册数学应用题100题及答案
- 防污闪涂料施工技术措施
评论
0/150
提交评论