《第11章补充文件操作PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第11章补充文件操作PPT讲稿.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第11章补充文件操作章补充文件操作第1页,共39页,编辑于2022年,星期日 使用流读写文件必须引入命名空间:使用流读写文件必须引入命名空间:System.IO;FileStream类,以字节为单位读写二进制或任意格式的类,以字节为单位读写二进制或任意格式的文件;文件;BinaryReader类和类和BinaryWriter类,以二进制形式,类,以二进制形式,从文件直接读写从文件直接读写bool、string、int16、int32等基本数据类等基本数据类型数据;型数据;StreamReader和和StreamWriter类,以字符或字符串为类,以字符或字符串为单位读写文本文件。单位读写文本
2、文件。C#中文件的读写操作使用的类中文件的读写操作使用的类2第2页,共39页,编辑于2022年,星期日 使用使用FileStream类可以类可以建立文件流对象建立文件流对象建立文件流对象建立文件流对象,用来打开和关闭文,用来打开和关闭文件,以字节(件,以字节(byte)为单位读写文件。)为单位读写文件。u 属性属性CanRead、CanSeek、CanWrite:检查流对象是否可以:检查流对象是否可以读、定位、写。读、定位、写。u 属性属性Length:以字节为单位表示流对象长度,即文件的长度:以字节为单位表示流对象长度,即文件的长度(字节为单位)。(字节为单位)。u 属性属性Position
3、获取或设置流对象当前读写位置。获取或设置流对象当前读写位置。构造函数:构造函数:u参数参数path是文件的相对路径或绝对路径是文件的相对路径或绝对路径 FileStream类类public FileStream(string path,FileMode mode,FileAccess access)打开方式读写方式3第3页,共39页,编辑于2022年,星期日FileMode.Create,创建新文件,如果文件已存在,文件,创建新文件,如果文件已存在,文件内容将被删除;内容将被删除;FileMode.CreateNew,创建新文件,如果文件已存在,则引,创建新文件,如果文件已存在,则引发异常;发
4、异常;FileMode.Open,打开现有文件,如果文件不存在,则引发异常;,打开现有文件,如果文件不存在,则引发异常;FileMode.OpenOrCreate,如果文件存在,打开文件,否,如果文件存在,打开文件,否则,创建新文件:则,创建新文件:FileMode.Truncate,打开现有文件,并将文件所有内容删除。,打开现有文件,并将文件所有内容删除。FileMode.Append,打开文件并将读写位置移到文件尾,打开文件并将读写位置移到文件尾,文件不存在则创建新文件,只能同文件不存在则创建新文件,只能同FileAccess.Write一起使用;一起使用;FileMode参数参数4第4页
5、,共39页,编辑于2022年,星期日FileAccess.Read(只读方式打开文件只读方式打开文件)FileAccess.Write(只写方式打开文件只写方式打开文件)FileAccess.ReadWrite(读写方式打开文件读写方式打开文件)。也可以没有第三个参数,默认为也可以没有第三个参数,默认为FileAccess.ReadWrite。FileAccess参数参数5第5页,共39页,编辑于2022年,星期日void Write(byte array,int offset,int count)void Write(byte array,int offset,int count);将数组中
6、多个字节写入流,参数将数组中多个字节写入流,参数1是要写入的数组,要写是要写入的数组,要写入流的第入流的第1个字节是个字节是arrayoffset,参数,参数3为要写入的字为要写入的字节数。节数。FileStream类的类的Write方法方法6第6页,共39页,编辑于2022年,星期日 using System;using System.IO;/使用文件必须引入的命名空间使用文件必须引入的命名空间 class WriteFile static void Main()/建立字节数组建立字节数组 byte data=new byte10;/为数组赋值为数组赋值 for(int i=0;i 10;i
7、+)datai=(byte)i;/建立流对象建立流对象 FileStream fs=new FileStream(E:f1.dat,FileMode.Create);/写写data字节数组中的所有数据到文件字节数组中的所有数据到文件 fs.Write(data,0,10);/不再使用的流对象,必须关闭。垃圾收集器不能自动清除流对象不再使用的流对象,必须关闭。垃圾收集器不能自动清除流对象 fs.Close();Write方法示例方法示例7第7页,共39页,编辑于2022年,星期日int Read(byte array,int offset,int count)int Read(byte arra
8、y,int offset,int count);从流中读数据写入字节数组从流中读数据写入字节数组array,读入的第,读入的第1个字节个字节写入写入arrayoffset,参数,参数3为要读入的字节数。返回值为要读入的字节数。返回值为所读字节数,由于可能已读到文件尾部,其值可能小为所读字节数,由于可能已读到文件尾部,其值可能小于于count,甚至为,甚至为0。FileStream类的类的Read方法方法8第8页,共39页,编辑于2022年,星期日 using System;using System.IO;/使用文件必须引入的命名空间使用文件必须引入的命名空间 class ReadFile st
9、atic void Main()FileStream fs=new FileStream(E:f1.dat,FileMode.Open);byte data=new bytefs.Length;/fs.Length为文件字节数为文件字节数 long n=fs.Read(data,0,(int)fs.Length);/n为所读字节数为所读字节数 fs.Close();Console.WriteLine(文件的内容如下:文件的内容如下:);foreach(byte m in data)Console.Write(0,m);Read方法示例方法示例9第9页,共39页,编辑于2022年,星期日long
10、 Seek(long offset,SeekOrigin origin)long Seek(long offset,SeekOrigin origin);作用:作用:移动读写位置到参数移动读写位置到参数2指定位置加上参数指定位置加上参数1指定偏移指定偏移量处;量处;参数参数2:SeekOrigin.Begin 开始位置开始位置SeekOrigin.End 结束位置结束位置SeekOrigin.Current 当前读写位置。当前读写位置。FileStream类的类的Seek方法方法10第10页,共39页,编辑于2022年,星期日 using System;using System.IO;/使用文
11、件必须引入的命名空间使用文件必须引入的命名空间 class FileStreamProperty static void Main()FileStream fs=new FileStream(E:f1.dat,FileMode.Open);/无第无第3个参数个参数 /文件读写位置移到从文件尾部向前文件读写位置移到从文件尾部向前4个字节个字节 fs.Seek(-4,SeekOrigin.End);byte data=new bytefs.Length;long n=fs.Read(data,0,(int)fs.Length);/n为所读字节数为所读字节数,4 Console.WriteLine(
12、文件的内容如下:文件的内容如下:);foreach(byte m in data)Console.Write(0,m);fs.Close();Seek方法示例方法示例11第11页,共39页,编辑于2022年,星期日读写基本数据类型读写基本数据类型(与与FileStream类实例配类实例配合使用!合使用!)u可以从文件直接读写可以从文件直接读写bool、string、int16、int32等等基本数据类型数据。基本数据类型数据。常用常用BinaryWriterBinaryWriter类方法如下。类方法如下。构造函数构造函数BinaryWriter(Streaminput):参数为:参数为File
13、Stream类对象。类对象。u方法方法void Write(void Write(数据类型数据类型数据类型数据类型 Value)Value):写入参数指定:写入参数指定的数据类型的一个数据,数据类型可以是基本数据的数据类型的一个数据,数据类型可以是基本数据类型,例如,类型,例如,int、bool、float等。等。BinaryReader类与类与BinaryWriter类类12第12页,共39页,编辑于2022年,星期日 using System;using System.IO;/使用文件必须引入的命名空间使用文件必须引入的命名空间 class WriteFile static void Ma
14、in()FileStream fs=new FileStream(E:f2.dat,FileMode.Create);BinaryWriter w=new BinaryWriter(fs);for(int i=0;i10;i+)w.Write(i);/写入写入int类型数据类型数据 w.Close();BinaryWriter类的类的Write方法方法13第13页,共39页,编辑于2022年,星期日构造函数构造函数BinaryReader(Stream input):参数为:参数为FileStream类对象类对象 方法方法ReadBoolean、ReadByte、ReadChar等等等等:返回
15、一个指定类型数据。方法没有参数。返回一个指定类型数据。方法没有参数。方法方法byte ReadBytes(int count):返回字节数:返回字节数组中是按参数指定数量读出的字节。组中是按参数指定数量读出的字节。BinaryReader类的读方法类的读方法14第14页,共39页,编辑于2022年,星期日 using System;using System.IO;/使用文件必须引入的命名空间使用文件必须引入的命名空间 class ReadFile static void Main()int data=new int10;FileStream fs=new FileStream(E:f2.dat
16、,FileMode.Open);BinaryReader r=new BinaryReader(fs);for(int i=0;i 0)OutFile=new FileStream(f2+i.ToString()+.fsm,FileMode.Create,FileAccess.Write);OutFile.Write(buffer,0,n);i+;OutFile.Close();else mark=false;inFile.Close();拆分文件拆分文件原文件原文件目标文件目标文件目标文件大小目标文件大小38第38页,共39页,编辑于2022年,星期日public void MergeFil
17、e(string f1,string f2,int f2Num)FileStream OutFile=new FileStream(f1,FileMode.Create,FileAccess.Write);long n,m;byte buffer;for(int i=0;i f2Num;i+)FileStream InFile=new FileStream(f2+i.ToString()+.fsm“,FileMode.Open,FileAccess.Read);m=InFile.Length;buffer=new bytem;n=InFile.Read(buffer,0,(int)m);OutFile.Write(buffer,0,(int)n);InFile.Close();OutFile.Close();合并文件合并文件合并后的目标文合并后的目标文件件原文件原文件原文件个数原文件个数39第39页,共39页,编辑于2022年,星期日