




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,本章教学目标,9.1文件管理File类和FileInfo类获取文件基本信息创建、复制、删除文件9.2目录管理Directory类和DirectoryInfo类创建、删除和移动目录查看文件和子目录复制、删除指定目录下的文件9.3文件读写文件和读的概念字节流、字符流、二进制流的读写小图片浏览器简单文本编辑程序,9.1文件管理,usingSystem.IO;File类和FileInfo类FileInfo类必须被实例化,9.1.2获取文件基本信息,例9.1利用FileInfo类的实例,查看指定文件的基本信息。,例9.1代码,privatevoidbutton1_Click(objectsender,EventArgse)OpenFileDialogopenFile=newOpenFileDialog();DialogResultresult=openFile.ShowDialog();if(result=DialogResult.OK)FileInfoinfo=newFileInfo(openFile.FileName);richTextBox1.Text+=文件名称:+info.Name+n;richTextBox1.Text+=完整路径:+info.FullName+n;richTextBox1.Text+=文件长度:+info.Length+n;richTextBox1.Text+=创建时间:+info.CreationTime+n;richTextBox1.Text+=上次访问时间:+info.LastAccessTime+n;richTextBox1.Text+=上次写入时间:+info.LastWriteTime+n;richTextBox1.Text+=文件基本属性:+info.Attributes+n;,9.1.3复制文件,File类的Copy()方法FileInfo类实例的CopyTo()方法例9.2利用File类实现的文件复制操作。,实例9.2代码,privatevoidbutton1_Click(objectsender,EventArgse)booloverwrite=true;/目标文件已存在时,允许覆盖stringpath1=textBox1.Text;/指定源文件的路径stringpath2=textBox2.Text;/指定目标文件的路径tryFile.Copy(path1,path2,overwrite);/执行文件复制操作catch(Exceptionex)/捕捉程序异常,报告错误信息MessageBox.Show(ex.ToString(),文件操作错误);,实例9.3,例9.3利用FileInfo类实现的文件复制操作,实例9.3,例9.3利用FileInfo类实现的文件复制操作代码privatevoidbutton1_Click(objectsender,EventArgse)booloverwrite=true;/目标文件已存在时,允许覆盖tryFileInfofile1=newFileInfo(textBox1.Text);/源文件实例对象FileInfofile2=newFileInfo(textBox2.Text);/目标文件实例对象file1.CopyTo(textBox2.Text,overwrite);/执行文件复制操作catch(Exceptionex)/捕捉程序异常,报告错误信息MessageBox.Show(ex.ToString(),文件操作错误);,9.1.4创建和删除文件,File类创建文件和删除文件的方法:File.Create(filename);File.Delete(filename);,9.2目录和路径管理,Directory类和DirectoryInfo类,9.2.2Path类,Path类的所有成员均为静态成员,引用时不需要实例化,9.2.3创建、删除和移动目录,Directory.Move(sourceDirectory,destinationDirectory)directoryinfoExample.MoveTo(destinationDirectory)把指定的文件夹连同它所包含的所有内容,一起移动到指定的目标位置,实例9.4,例9.4利用Directory类,按指定的路径创建目录privatevoidbutton1_Click(objectsender,EventArgse)trystringpath=textBox1.Text;if(Directory.Exists(path)Directory.Delete(path);/若指定的目录不为空,则删除时出错/Directory.Delete(path,true);/无论指定的目录是否为空,均可删除label1.Text=目录已存在,予以删除!;Directory.CreateDirectory(path);/创建目录catch(Exceptionex)/捕捉程序异常,报告错误信息label1.Text=程序异常:+ex.ToString();,9.2.3查看指定目录下的文件和子目录,Directory类的GetFileSystemEntries()方法获取指定目录下的所有文件名和子目录名GetFiles()方法DirectoryInfo类实例的GetFileSystemInfos()方法,9.2.4复制指定目录下的文件,例9.7利用DirectoryInfo类和FileInfo类,将指定源文件夹之下的全部文件复制到指定目标文件夹中。程序界面如图9-4所示,复制过程显示在ListBox控件中。,例9.7代码,privatevoidbutton1_Click(objectsender,EventArgse)DirectoryInfosource=newDirectoryInfo(textBox1.Text);/源文件夹DirectoryInfodestination=newDirectoryInfo(textBox2.Text);if(!destination.Exists)/判断指定的目标目录是否存在destination.Create();/若指定目标目录不存在,则创建目录foreach(FileInfofinsource.GetFiles()/遍历源文件夹f.CopyTo(destination.Fullname+f.Name,true);listBox1.Items.Add(f.Name+被复制n);listBox1.Items.Add(复制完成);,9.2.6删除指定目录下的文件,例9.8利用Directory类和File类,删除指定目录下的全部文件。删除过程显示在ListBox控件中。,86,例9.8代码,privatevoidbutton1_Click(objectsender,EventArgse)stringpath=textBox1.Text;/被删除文件所在的路径stringmyfiles=Directory.GetFiles(path);/获取指定路径下的全部文件for(inti=0;imyfiles.Length;i+)File.Delete(myfilesi);/删除指定的一个文件listBox1.Items.Add(myfilesi+被删除);listBox1.Items.Add(path+之下的文件已全部被删除);,9.3文件的读写,9.3.1文件和流的概念9.3.2字节流的读写9.3.3字符流的读写9.3.4二进制流的读写9.3.5小图片浏览器9.3.6简单文本编辑程序,9.3.1文件和流的概念,文件是在磁盘、磁带或光盘等非易失性存储媒体上保存数据的有序集合,是操作系统数据读写的基本对象。流(stream)是字节序列的抽象概念,是串行化设备的抽象表示,串行化设备可以用线性方式存储数据,并可以用同样的方式访问数据。这个设备可以是磁盘文件、打印机、内存和其他支持线性方式读写的对象。流的基本操作包括:读取(Read)从流到数据结构的数据传输写入(Write)从数据结构到流的数据传输查找(Seek)对流内当前位置进行查询和修改,9.3.2字节流的读写,要使用FileStream操作文件,必须先创建一个FileStream类的实例。创建FileStream类实例的重载模式有15种,下面列出最常用的两种:FileStreamExample(stringpath,FileModemode)FileStreamExample(stringpath,FileModemode,FileAccessaccess)其中:path被操作文件的名称,包含完整的路径说明mode被操作文件的模式,包括Append、Create、CreateNew、Open、OpenOrCreate、Truncateaccess被操作文件的访问方式,包括Read、Write、ReadWrite,表9-4FileStream对象用于实现字节读写操作的方法,实例9.9,例9.9利用FileStream对象的ReadByte()方法读取字节,并在文本框中显示文件内容。输入文件的绝对路径之后,单击“读取”按钮,被选定文本文件的内容在RichTextBox中显示。privatevoidbutton1_Click(objectsender,EventArgse)FileStreamfs=newFileStream(textBox1.Text,FileMode.Open);richTextBox1.Text=;for(inti=0;ifs.Length;i+)/fs.Length表示了文件的字节长度richTextBox1.Text+=(char)fs.ReadByte();/读一个字节并强制进行类型转换,实例9.10,例9.10利用FileStream对象的Read()方法读取字节块,并在文本框中显示文件内容。privatevoidbutton1_Click(objectsender,EventArgse)FileStreamfs=newFileStream(textBox1.Text,FileMode.Open);richTextBox1.Text=;intcount=(int)fs.Length;/获取指定文件的字节长度Bytereadstream=newBytecount;/根据文件长度创建数组readstreamfs.Read(readstream,0,count);/把整个文件当成一个字节块读入数组for(inti=0;icount;i+)/把数组readstream的内容显示到文本框内richTextBox1.Text+=(char)readstreami;,9.3.3字符流的读写,实例9.12,例9.12使用StreamReader对象读取指定绝对路径的包含汉字信息的文本文件,并在窗体上的文本框内显示文件的全部内容。privatevoidbutton1_Click(objectsender,EventArgse)tryStreamReadersr=newStreamReader(textBox1.Text,Encoding.Default);richTextBox1.Text=sr.ReadToEnd();/一次性读整个文件全部字符catchMessageBox.Show(文件打不开或者文件不存在,文件打开错误,MessageBoxButtons.OK,MessageBoxIcon.Error);privatevoidbutton2_Click(objectsender,EventArgse)Close();,实例9.13,例9.13在文本框中输入文件的绝对路径,在richTextBox1内输入字符串,单击“写入”按钮,使用StreamWriter对象将字符串写入指定绝对路径的文本文件中,例9.13程序代码,privatevoidbutton1_Click(objectsender,EventArgse)Stringpath=textBox1.Text;StreamWritersw=newStreamWriter(path,true);sw.Write(richTextBox1.Text);sw.Close();richTextBox1.Text=;,9.3.4二进制流的读写,BinaryReaderBinaryWriter实现二进制格式数据的读写操作二进制文件被看作是字节的顺序排列,没有任何附加结构和附加描述二进制文件以字节为最小定界单位,可以从文件中的任何一个字节处开始读或写,实例9.14,例9.14利用BinaryReader和BinaryWriter类的实例对灰度位图进行加亮处理,例9.14程序代码(1),privatevoidForm1_Load(objectsender,EventArgse)Bitmapbmp=newBitmap(f:桔子.bmp);pictureBox1.Image=bmp;,例9.14程序代码(2),privatevoidbutton1_Click(objectsender,EventArgse)trypictureBox1.Image.Dispose();FileStreamfs=newFileStream(f:桔子.bmp,FileMode.Open);BinaryReaderbr=newBinaryReader(fs);bytebmpfile=br.ReadBytes(int)fs.Length);fs.Close();for(inti=1078;ibmpfile.Length;i+)/前1078字节为文件结构if(bmpfilei=225)/图像元素加亮校正bmpfilei+=30;elsebmpfilei=255;/每个像素的最高亮度为255FileStreamsw=newFileStream(f:加亮桔子.bmp,FileMode.Truncate);BinaryWriterbw=newBinaryWriter(sw);bw.Write(bmpfile);sw.Close();Bitmapbmp=newBitmap(f:加亮桔子.bmp);pictureBox1.Image=bmp;catch(Exceptionex)MessageBox.Show(ex.ToString(),文件错误,MessageBoxButtons.OK,MessageBoxIcon.Error);,9.3.5小图片浏览器,FolderBrowserDialog的ShowDialog()方法,实例9.15,实例9.15程序代码,privatevoidbutton1_Click(objectsender,EventArgse)if(folderBrowserDialog1.ShowDialog()=DialogResult.OK)if(folderBrowserDialog1.SelectedPath.Trim()!=)textBox1.Text=folderBrowserDialog1.SelectedPath.Trim();DirectoryInfodi=newDirectoryInfo(textBox1.Text);listBox1.Items.AddRange(di.GetFileSystemInfos();privatevoidlistBox1_SelectedIndexChanged(objectsender,EventArgse)trystringimgfile=textBox1.Text+listBox1.SelectedItem.ToString();Bitmapbmp=newBitmap(imgfile);pictureBox1.Image=bmp;catchMessageBox.Show(文件类型错误);,9.3.6简单文本编辑程序,例9.16创建可以用来编辑文本文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025劳动合同模板:短期合同员工工作协议范本
- 2025年建筑工程类交安三类人员企业主要负责人(A证)-企业主要负责人(A证)参考题库含答案解析(5卷)
- 2025年学历类自考专业(电子商务)网络营销与策划-电子商务案例分析参考题库含答案解析(5卷)
- 2025年学历类自考专业(电子商务)市场营销(三)-计算机与网络技术基础参考题库含答案解析(5卷)
- 2025年个人小额信用借款合同模板
- 2025年学历类自考专业(法律)西方法律思想史-保险法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)知识产权法-法理学参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)民法学-合同法参考题库含答案解析(5卷)
- 2025年学历类自考专业(法律)国际私法-公证与律师制度参考题库含答案解析(5卷)
- 2025年学历类自考专业(工商企业管理)企业经营战略概论-质量管理学参考题库含答案解析(5卷)
- 泰戈尔简介课件
- 2025年继电保护实操考试题带答案
- (2025)国库知识竞赛题库及答案
- (2025年标准)产假提前上班协议书
- 医院价格委员会管理制度及实施
- 2025年重庆市面向社会公开选拔社区专职工作者后备库人选考试(综合知识)历年参考题库含答案详解(5套)
- 《全球哮喘管理和预防策略(GINA 2025)》解读
- 2025年广东省中考语文试卷(含答案解析)
- (高清版)T∕CES 243-2023 《构网型储能系统并网技术规范》
- 山东淄博小升初数学真题试卷
- 网约车公司风险管理制度
评论
0/150
提交评论