第8章 流和文件_第1页
第8章 流和文件_第2页
第8章 流和文件_第3页
第8章 流和文件_第4页
第8章 流和文件_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章流和文件主要内容流概念文件与目录管理文件的读写序列化和反序列化8.1基本概念8.1.1文件File——是数据集合。文件由记录组成,记录可以是任何类型的数据(文本型、二进制等)。8.1.2流在.NET中,对文件的输入/输出操作是由流(Stream)来处理的Stream——是字节序列的抽象概念。数据从外部源传输到程序中,称为读取流;数据从程序传输到外部源,称为写入流StreamFileStreamMemoryStreamBufferedStreamNetWorkStreamStreamReaderStreamWriterBinaryReaderBinaryWriter8.1基本概念——8.1.3文件操作类文件的相关操作需要使用System.IO命名空间本章介绍System.IO命名空间三大类:文件管理类、文件读写类、文件操作异常类详见表8-18.2文件与目录操作——8.2.1目录操作目录管理主要使用Directory、DirectoryInfo和Parth(1)Directory类是一个抽象类,所提供的方法都是静态的。常用静态方法见表8-3(2)DirectoryInfo类是一个抽象类,所提供的方法都是实例方法(3)Path类用来处理路径字符串,所提供的方法都是静态方法。常用方法见表8-6.Directory类实例创建目录Directory.CreateDirectory("d:\\A1\\myD");移动目录Directory.Move(@"d:\A1",@"d:\ABC");删除目录if(Directory.Exists("d:\\ABC\\myD")){Directory.Delete("d:\\ABC\\myd");

}获取目录信息DirectoryInfomyInfo=Directory.GetParent("d:\\ABC\\myD");stringstrParentInfo=myInfo.FullName;stringstrdt=(myInfo.CreationTime).ToLongDateString();stringstrRoot=Directory.GetDirectoryRoot("d:\\abc\\myD");DirectoryInfo类实例创建目录DirectoryInfomyInfo=newDirectoryInfo("d:\\myD");myInfo.Create();移动目录DirectoryInfomyInfo=newDirectoryInfo("d:\\myD");myInfo.MoveTo("d:\\ABC");删除目录DirectoryInfomyInfo=newDirectoryInfo("d:\\myD");if(myInfo.Exists){myInfo.Delete();}获取目录信息DirectoryInfomyInfo=newDirectoryInfo("d:\\myD");stringmystr=myInfo.FullName;DateTimemyDt=myInfo.LastAccessTime;Path类Path类用来处理路径字符串,所提供的方法都是静态方法。Directory.CreateDirectory(“d:\\myD\\ABC");stringdir=Path.GetDirectoryName("d:\\myD\\ABC\\MyFile.txt");stringname=Path.GetFileName("d:\\myD\\ABC\\MyFile.txt");stringfullpath=Path.GetFullPath("MyFile.txt");boolhasExt=Path.HasExtension("d:\\myD\\ABC\\MyFile.txt");8.2文件与目录管理——8.2.2文件操作类文件管理主要使用File和FileInfo两个类(1)File类是一个抽象类,所提供的方法都是静态的。File类的常用静态方法(表8-7)(2)FileInfo类是一个抽象类,所提供的方法都是实例方法。FileInfo类的常用属性(

表8-8)(3)File类和FileInfo类实例File类实例创建文件//StreamWritersw=File.CreateText(@"D:\myTest.TXT");FileStreamfs=File.Create(@"d:\myTest.txt");打开文件//StreamReadersr=File.OpenText(@"d:\myTest.txt");FileStreamfs=File.Open(“…",FileMode.Open,FileAccess.Read);文件是否存在boolisFileExist=File.Exists("d:\\myTest.txt");if(isFileExist){MessageBox.Show("文件存在!");}复制文件File.Copy("d:\\myTest.txt","e:\\Test.txt",true);移动文件File.Move("d:\\myTest.txt","e:\\myFile.txt");删除文件if(File.Exists("e:\\myTest.txt")){File.Delete("e:\\mytest.txt");}FileInfo类实例创建文件

FileInfofi=newFileInfo("d:\\myFile.txt");if(!fi.Exists){fi.Create();//fi.CreateText();}向文件中写FileInfofi=newFileInfo(@"d:\myFile.txt");StreamWritersw=fi.AppendText();sw.Write("增加一行数据");复制文件FileInfofi=newFileInfo("d:\\myFile.txt");if(fi.Exists){fi.CopyTo("e:\\myfile.txt",true);}FileInfo属性FileInfofi=newFileInfo("d:\\myFile.txt");stringname=fi.Name;longlen=fi.Length;stringext=fi.Extension;DateTimedt=fi.CreationTime;8.3文件的读写——FileStream类8.3.1FileStream类FileStream类的特点是操作字节和字节数组,适合对随机文件操作.也可以对文本文件读写。FileStream类的构造函数,见表8-10FileStrea类的构造函数的FileMode、FileAccess、FileShare参数都是枚举类型,这些枚举类型取值见表8-11、表8-12和表8-13【实例8-1】利用FileStream读写文件。8.3.2文本文件的读写使用StreamReader和StreamWriter类对文本文件进行读写在System.Text命名空间中定义的Encoding类对字符编码进行了抽象。有5种编码格式:ASCII、Default(Encoding.Default为系统编码)Unicode、UTF-7、UTF-8(为默认编码格式,能将字节流转换为字符串)读/写用相同的编码,否则出现乱码文件内含有汉字,用Encoding.GetEncoding("gb2312")8.3.2文本文件的读写——StreamReader类创建StreamReader类的实例方法一:利用StreamReader类的构造函数StreamReadersr=newStreamReader(string,Encoding.GetEncoding(“GB2312”));方法二:创建FileStream实例,然后转换为StreamReader对象FileStreamfs=newFileStream(string,FileMode,FileAccess);StreamReadersr=newStreamReader(fs,Encoding.GetEncoding(“GB2312”));方法三:使用File类的OpenText方法StreamReadersr=File.OpenText(“d:\\myFile.txt”);StreamReader类常用属性和方法(表8-17)8.3.2文本文件的读写——StreamWriter类StreamWriter类以特定的编码方式向流中写入字符创建StreamWriter类的实例StreamWriter类的常用属性和方法(表8-18)【实例8-2】使用StreamReader和StreamWriter编写一个读写文本文件的Windows应用程序。方法一:使用StreamWriter类的构造函数StreamWritersw=newStreamWriter(string,Encoding.GetEncoding(“GB2312”));方法二:创建FileStream实例,然后转换为StreamWriter对象FileStreamfs=newFileStream(string,FileMode,FileAccess);StreamWritersw=newStreamWriter(fs,encoding.GetEncoding(“GB2312”));8.3.3二进制文件读写——BinaryWriter类1、BinaryWriter类以二进制形式将基本数据类型的数据写入流BinaryWriter的常用方法(表8-22)【实例8-3】该实例演示了向文件中写入二进制数据2、BinaryReader类读取二进制数据,将其保存到变量或数组中BinaryReader的常用方法(表8-25)【实例8-4】使用BinaryReader和BinaryWirter复制图片8.4序列化和反序列化概念:序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。序列化和反序列化最主要的作用:在进程下次启动时读取上次保存的对象的信息在不同的AppDomain或进程之间传递数据在分布式应用系统中传递数据常见的序列化的方法主要有三个:BinaryFormatter、SoapFormatter、XML序列化。序列化和反序列化需要引入下列命名空间:usingSystem.IO;usingSystem.Runtime.Serialization.Formatters.Binary;usingSystem.Runtime.Serialization.Formatters.Soap;usingSystem.Xml.Serialization;8.4序列化和反序列化Book类:[Serializable]//标记可序列化类型publicclassBook{publicstringBookID;publicstringstrBookName{get;set;}privatestringBookPrice;publicvoidSetBookPrice(stringprice){BookPrice=price;}[NonSerialized]publicstringBookISBN;publicvoidWrite(){Console.WriteLine("BookID:"+BookID);Console.WriteLine("BookName:"+strBookName);Console.WriteLine("BookISBN:"+BookISBN);Console.WriteLine("BookPrice:"+BookPrice);}}1.BinaryFormatter序列化方式(1)BinarySerialize类publicclassBinarySerialize{stringstrFile="c:\\book1.data";publicvoidSerialize(Bookbook){using(FileStreamfs=newFileStream(strFile,FileMode.Create)){BinaryFormatterformatter=newBinaryFormatter();formatter.Serialize(fs,book);}}publicBookDeSerialize(){Bookbook;using(FileStreamfs=newFileStream(strFile,FileMode.Open)){BinaryFormatterformatter=newBinaryFormatter();book

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论