《第7章-目录和文件操作优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第7章-目录和文件操作优秀PPT.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第 7 章章 书目和文件操作书目和文件操作 7.1 一个简洁的文件读写程序一个简洁的文件读写程序7.2 书目管理书目管理7.3 文件管理文件管理7.3 文本文件的读写文本文件的读写7.4 二进制文件的读写二进制文件的读写本本 章章 内内 容容C#程序设计教程蒙祖强编著7.1 一个简洁的文件读写程序创创建建窗窗体体应应用用程程序序ReadWriteFile:在在窗窗体体上上添添加加TreeView等等控控件,适当调整各控件的大小和位置,设计界面如下图:件,适当调整各控件的大小和位置,设计界面如下图:C#程序设计教程蒙祖强编著7.1 一个简洁的文件读写程序在在设设计计界界面面中中双双击击【列列出
2、出书书目目下下的的文文本本文文件件】和和【保保存存当当前前文文件件】按按钮钮,分分别别编编写写这这两两个个按按钮钮的的Click事事务务处处理理代代码码;最最终终为为控件控件treeView1编写编写AfterSelect事务的处理代码:事务的处理代码:首先在首先在Form1.cs文件的前面引入命名空间:文件的前面引入命名空间:using System.IO;并为并为Form1类添加一个私有成员变量:类添加一个私有成员变量:private string filename=;C#程序设计教程蒙祖强编著7.1 一个简洁的文件读写程序 /【列出书目下的文本文件】按钮【列出书目下的文本文件】按钮 pr
3、ivate void button1_Click(object sender,EventArgs e)TreeNode node=new TreeNode(textBox2.Text,0,0);treeView1.Nodes.Clear();treeView1.Nodes.Add(node);TreeNode topnode=treeView1.TopNode;/获得指定书目下的全部文件获得指定书目下的全部文件 string Files=Directory.GetFiles(textBox2.Text,*.txt);for(int i=0;i Files.Length;i+)string s=
4、Filesi.Substring(Filesi.LastIndexOf()+1);node=new TreeNode(s,1,2);topnode.Nodes.Add(node);topnode.Expand();C#程序设计教程蒙祖强编著7.1 一个简洁的文件读写程序 /控件控件treeView1编写编写AfterSelect事务的处理代码事务的处理代码 private void treeView1_AfterSelect(object sender,TreeViewEventArgs e)filename=textBox2.Text+treeView1.SelectedNode.Text;
5、StreamReader reader=null;try reader=new StreamReader(filename,System.Text.Encoding.Default);string line=reader.ReadLine();textBox1.Text=;while(line!=null)textBox1.Text+=line+rn;line=reader.ReadLine();catch(IOException ex)MessageBox.Show(ex.Message);finally if(reader!=null)reader.Close();C#程序设计教程蒙祖强编
6、著7.1 一个简洁的文件读写程序 /【保存当前文件保存当前文件】按钮按钮 private void button2_Click(object sender,EventArgs e)StreamWriter writer=null;try writer=new StreamWriter(filename,false,System.Text.Encoding.Default);writer.WriteLine(textBox1.Text);catch(Exception ex)MessageBox.Show(ex.Message);finally if(writer!=null)writer.Cl
7、ose();C#程序设计教程蒙祖强编著7.1 一个简洁的文件读写程序运行该程序,先在左上角的文本框中输入已有的书目路径,然后运行该程序,先在左上角的文本框中输入已有的书目路径,然后点击运行界面上的【列出书目下的文本文件】按钮,在点击运行界面上的【列出书目下的文本文件】按钮,在TreeView控件中将列出给定书目下的全部文本文件,选择相应的文件即在控件中将列出给定书目下的全部文本文件,选择相应的文件即在右边的文本框中打开被选定的文件。当单击【保存当前文件】按右边的文本框中打开被选定的文件。当单击【保存当前文件】按钮时,将在文本框中打开的文件保存到原文件中。钮时,将在文本框中打开的文件保存到原文件
8、中。C#程序设计教程蒙祖强编著7.1 一个简洁的文件读写程序Directory类、类、File类、类、StreamReader类、类、StreamWriter类及有关书目和文件操类及有关书目和文件操作的类都是放在命名空间作的类都是放在命名空间System.IO中中;因此在程序开头要运用下列语句引入该命因此在程序开头要运用下列语句引入该命名空间:名空间:using System.IO;C#程序设计教程蒙祖强编著7.2 书目管理书目管理7.2.1 书目存在的推断书目存在的推断 对于指定的书目,可以由对于指定的书目,可以由Directory.Exists(string path)方法来推方法来推断其
9、是否存在,假如存在则返回断其是否存在,假如存在则返回true,否则范围,否则范围false。例如:例如:string path=C:Inetpub;if(Directory.Exists(path)=true)/相关处理代码相关处理代码Console.WriteLine(Existing);C:Inetpub也写成也写成C:Inetpub,但不能写成,但不能写成C:InetpubC#程序设计教程蒙祖强编著7.2 书目管理书目管理7.2.2 书目的创建和删除书目的创建和删除1.书目的创建书目的创建书书目目的的创创建建是是用用Directory.CreateDirectory(string pat
10、h)方方法法来来实实现。现。例如:例如:string path=D:VS2008第第7章章Filesdir1;Directory.CreateDirectory(path);不管不管D:VS2008第第7章章Filesdir1书目是否已存在,执行上述书目是否已存在,执行上述语句时不会给出任何提示。语句时不会给出任何提示。假如该书目已经存在,执行上述语句时也不会删除其中包含的假如该书目已经存在,执行上述语句时也不会删除其中包含的文件和子书目。文件和子书目。C#程序设计教程蒙祖强编著7.2 书目管理书目管理7.2.2 书目的创建和删除书目的创建和删除2.书目的删除书目的删除 书书目目的的删删除除是
11、是由由Directory.Delete()方方法法来来实实现现,该该方方法法有有两两个个重重载版本:载版本:void Directory.Delete(string path)void Directory.Delete(string path,bool recursive)用于删除空书目,假如书用于删除空书目,假如书目非空或指定的书目不存目非空或指定的书目不存在都会产生异样在都会产生异样 参数参数recursive值为值为true时,时,表示删除指定的书目及表示删除指定的书目及该书目下的全部子书目,该书目下的全部子书目,假如指定书目不存在会假如指定书目不存在会产生异样。产生异样。C#程序设计教
12、程蒙祖强编著7.2 书目管理书目管理7.2.2 书目的创建和删除书目的创建和删除例例如如,下下面面代代码码用用于于删删除除由由path指指定定的的书书目目,并并在在删删除除过过程程中中给给出相关的提示信息:出相关的提示信息:string path=D:VS2008第第7章章Filesdir1;if(Directory.Exists(path)=true)if(MessageBox.Show(确确认认要要删删除除该该书书目目及及其其子子书书目目吗吗?,删除书目删除书目,MessageBoxButtons.YesNo,MessageBoxIcon.Warning)=DialogResult.Yes
13、)Directory.Delete(path,true);C#程序设计教程蒙祖强编著7.2 书目管理书目管理7.2.3 当前工作书目的获得当前工作书目的获得当前应用程序(当前应用程序(.exe文件)的当前工作书目可由文件)的当前工作书目可由Directory.GetCurrentDirectory()方法获得。方法获得。例如:例如:textBox1.Text=Directory.GetCurrentDirectory();执行后在执行后在textBox1控件中显示控件中显示“D:VS2008第第7章章testtestbinDebug”。C#程序设计教程蒙祖强编著7.2 书目管理书目管理7.2.
14、4 书目相关信息的获得书目相关信息的获得 1.获得指定书目下的全部子书目和文件获得指定书目下的全部子书目和文件 获得指定书目下的全部子书目可由获得指定书目下的全部子书目可由Directory.GetDirectories()方方法来实现。法来实现。例如:例如:string path=D:VS2008;/获得指定书目下的全部子书目获得指定书目下的全部子书目string Dirs=Directory.GetDirectories(path);for(int i=0;i Dirs.Length;i+)listBox1.Items.Add(Dirsi);C#程序设计教程蒙祖强编著7.2 书目管理书目管
15、理7.2.4 书目相关信息的获得书目相关信息的获得 1.获得指定书目下的全部子书目和文件获得指定书目下的全部子书目和文件获得指定书目下的全部文件可由获得指定书目下的全部文件可由Directory.GetFiles()方法来实现。方法来实现。例如:例如:string path=D:VS2008;/获得获得D:VS2008书目下全部的书目下全部的txt文件文件string Files=Directory.GetFiles(path,*.txt);for(int i=0;i Files.Length;i+)listBox1.Items.Add(Filesi);C#程序设计教程蒙祖强编著7.2 书目管
16、理书目管理7.2.4 书目相关信息的获得书目相关信息的获得 3.获得指定书目所在驱动器的相关信息获得指定书目所在驱动器的相关信息 驱动器信息主要包括驱动器名称、总容量、剩余空间、驱动器驱动器信息主要包括驱动器名称、总容量、剩余空间、驱动器格式等。格式等。获得方法是,先利用给定的书目创建获得方法是,先利用给定的书目创建DriveInfo类的对象,然后类的对象,然后通过对象的属性和方法来获得。通过对象的属性和方法来获得。C#程序设计教程蒙祖强编著7.2 书目管理书目管理7.2.4 书目相关信息的获得书目相关信息的获得例如,下列代码将获得例如,下列代码将获得D:VS2008第第7章章Filesdir
17、1书目所在驱动器书目所在驱动器的若干信息:的若干信息:string path=D:VS2008第第7章章Filesdir1;DriveInfo di=new DriveInfo(path);listBox1.Items.Add(驱动器名称:驱动器名称:+di.Name);listBox1.Items.Add(驱动器根书目:驱动器根书目:+di.RootDirectory);listBox1.Items.Add(剩余空间:剩余空间:+(double)di.TotalFreeSpace/1024/1024/1024+GB);listBox1.Items.Add(驱动器容量:驱动器容量:+(doub
18、le)di.TotalSize /1024/1024/1024+GB);listBox1.Items.Add(可用空间:可用空间:+(double)di.AvailableFreeSpace/1024/1024/1024+GB);listBox1.Items.Add(驱动器格式:驱动器格式:+di.DriveFormat.ToString();listBox1.Items.Add(驱动器类型:驱动器类型:+di.DriveType);listBox1.Items.Add(驱动器卷标:驱动器卷标:+di.VolumeLabel);C#程序设计教程蒙祖强编著7.3 文件管理文件管理7.3.1 文件
19、的拷贝、移动和删除文件的拷贝、移动和删除1.拷贝文件拷贝文件文件的拷贝可利用文件的拷贝可利用File类供应的静态方法类供应的静态方法Copy()来实现,它有两来实现,它有两个重载版本:个重载版本:public static void Copy(string sourceFileName,string destFileName)public static void Copy(string sourceFileName,string destFileName,bool overwrite)其中,其中,sourceFileName:源文件名:源文件名destFileName:目标文件名:目标文件名F
20、ile.Copy(sourceFileName,destFileName);当当overwrite的值为的值为true时,表示要覆盖已存在的同名文件,当参时,表示要覆盖已存在的同名文件,当参数数overwrite缺省时(见第一个方法),相当于取值缺省时(见第一个方法),相当于取值false,即不允,即不允许覆盖。许覆盖。C#程序设计教程蒙祖强编著7.3 文件管理文件管理7.3.1 文件的拷贝、移动和删除文件的拷贝、移动和删除 2.移动文件移动文件文件的移动可利用文件的移动可利用File类供应的静态方法类供应的静态方法Move()来实现,该方法来实现,该方法的原型如下:的原型如下:public
21、static void Move(string sourceFileName,string destFileName)例如:例如:string sourceFileName=D:VS2008第第7章章Filesdir1MyName.txt;string destFileName=D:VS2008第第7章章Filesdir2MyName.txt;File.Move(sourceFileName,destFileName);C#程序设计教程蒙祖强编著7.3 文件管理文件管理7.3.1 文件的拷贝、移动和删除文件的拷贝、移动和删除3.删除文件删除文件 文件的删除可利用文件的删除可利用File类供应的
22、静态方法类供应的静态方法Delete()来实现。来实现。例如,下面语句的作用是删除例如,下面语句的作用是删除D:VS2008第第7章章Files书目下的书目下的文件文件MyName.txt:string path=D:VS2008第第7章章FilesMyName.txt;File.Delete(path);C#程序设计教程蒙祖强编著7.3 文件管理文件管理7.3.2 文件信息的获得和设置文件信息的获得和设置FileInfo类通常用于获得或设置文件的有关信息和属性。类通常用于获得或设置文件的有关信息和属性。方法是:先利用方法是:先利用FileInfo类的构造函数和文件名创建文件的类的构造函数和文
23、件名创建文件的FileInfo类对类对象,然后通过对象的方法来实现有关信息和属性的获得和设置。象,然后通过对象的方法来实现有关信息和属性的获得和设置。例如,下列代码显示了如何获得文件所在的书目等信息:例如,下列代码显示了如何获得文件所在的书目等信息:string path=D:VS2008第第7章章FilesMyName.txt;FileInfo fi=new FileInfo(path);string info;info=文件所在的书目:文件所在的书目:+fi.DirectoryName;/返回类型是返回类型是stringlistBox1.Items.Add(info);info=文件所在的
24、书目:文件所在的书目:+fi.Directory.ToString();/返回类型是返回类型是DirectorylistBox1.Items.Add(info);info=文件的确定路径:文件的确定路径:+fi.FullName;listBox1.Items.Add(info);C#程序设计教程蒙祖强编著7.3 文件管理文件管理7.3.2 文件信息的获得和设置文件信息的获得和设置info=文件名:文件名:+fi.Name;listBox1.Items.Add(info);info=创建时间:创建时间:+fi.CreationTime.ToString();listBox1.Items.Add(
25、info);info=文件的扩展名:文件的扩展名:+fi.Extension;listBox1.Items.Add(info);info=文件的最近访问时间:文件的最近访问时间:+fi.LastAccessTime;listBox1.Items.Add(info);info=最近写文件的时间:最近写文件的时间:+fi.LastWriteTime;listBox1.Items.Add(info);info=文件的实际长度(包含的字节数):文件的实际长度(包含的字节数):+fi.Length.ToString();listBox1.Items.Add(info);info=是否只读:是否只读:+f
26、i.IsReadOnly.ToString();listBox1.Items.Add(info);/fi.IsReadOnly=true;/可以设置这个属性,使得文件变为只读可以设置这个属性,使得文件变为只读C#程序设计教程蒙祖强编著7.4 文本文件的读写文本文件的读写7.4.1 读文本文件读文本文件StreamReader类供应构造函数来对指定的文件创建文件的输入流。类供应构造函数来对指定的文件创建文件的输入流。StreamReader类定义了类定义了10个版本的重载构造函数,其中常有的有个版本的重载构造函数,其中常有的有两种:两种:public StreamReader(string pa
27、th)public StreamReader(path,System.Text.Encoding encoding)其中,参数其中,参数path为文件路径,为文件路径,encoding用于设置编码方式,假如用于设置编码方式,假如文件中包含中文,该参数一般设置为文件中包含中文,该参数一般设置为System.Text.Encoding.Default。C#程序设计教程蒙祖强编著7.4 文本文件的读写文本文件的读写7.4.1 读文本文件读文本文件StreamReader类的常用方法主要包括:类的常用方法主要包括:BaseStream.Seek()方法方法该方法用于指定在输入流中读取字符的位置,其原型
28、如下:该方法用于指定在输入流中读取字符的位置,其原型如下:long BaseStream.Seek(long offset,SeekOrigin origin)其中,其中,origin:用于设置在输入流中读取字符的初始位置,其可能取值:用于设置在输入流中读取字符的初始位置,其可能取值包括包括SeekOrigin.Begin、SeekOrigin.Current和和SeekOrigin.End,分别表示初始位置为输入流的起先处、当前位置和流的末尾;分别表示初始位置为输入流的起先处、当前位置和流的末尾;offset:相对于:相对于origin参数的字节偏移量,初始位置参数的字节偏移量,初始位置of
29、fset就是在就是在输入流中读取字符的真正位置。输入流中读取字符的真正位置。StreamReader reader=new StreamReader(D:testtxt);reader.BaseStream.Seek(10,SeekOrigin.Begin);从文件从文件D:testtxt中中的第的第10字符起先读字符起先读入文本入文本 C#程序设计教程蒙祖强编著7.4 文本文件的读写文本文件的读写7.4.1 读文本文件读文本文件Read()方法方法 该方法用于读取输入流中的下一个字符,同时使输入流的当前该方法用于读取输入流中的下一个字符,同时使输入流的当前位置加位置加1。该函数返回的是字符的
30、。该函数返回的是字符的ASCII码的码的int型整数,因此须型整数,因此须要作确定的转换。要作确定的转换。例如:例如:string path=D:test.txt;StreamReader reader;reader=new StreamReader(path,System.Text.Encoding.Default);int ascii=reader.Read();/获得字符的获得字符的ASCII码码char ch=(char)ascii;/转换为字符转换为字符while(ascii!=-1)if(ascii!=10)richTextBox1.Text+=ch.ToString();asci
31、i=reader.Read();ch=(char)ascii;reader.Close();C#程序设计教程蒙祖强编著7.4 文本文件的读写文本文件的读写7.4.1 读文本文件读文本文件ReadLine()方法方法 该方法用于从输入流中读取一行字符,并将结果以字符串返回。该方法用于从输入流中读取一行字符,并将结果以字符串返回。例如:例如:string path=D:VS2008第第7章章Files毛主席诗词毛主席诗词2.txt;StreamReader reader=new StreamReader(path,System.Text.Encoding.Default);reader.BaseS
32、tream.Seek(10,SeekOrigin.Begin);string line=reader.ReadLine();while(line!=null)richTextBox1.Text+=line+n;line=reader.ReadLine();reader.Close();从文本文件从文本文件“毛主席诗词毛主席诗词2.txt”中的第中的第10字符起先,字符起先,逐行读取文本,并将结果显逐行读取文本,并将结果显示在示在richTextBox1控件中控件中C#程序设计教程蒙祖强编著7.4 文本文件的读写文本文件的读写7.4.2 写文本文件写文本文件StreamWriter类也供应构造方
33、法来对指定的文件创建输出流。类也供应构造方法来对指定的文件创建输出流。StreamWriter类定义了类定义了7个版本的重载构造函数,其中常有的有三个版本的重载构造函数,其中常有的有三种:种:public StreamWriter(string path)public StreamWriter(string path,bool append)public StreamWriter(string path,bool append,System.Text.Encoding encoding)其中,参数其中,参数path和和encoding同同StreamReader类的构造函数,参数类的构造函数,
34、参数append的值假如设置为的值假如设置为true,表示追加写入,为,表示追加写入,为false表示覆盖写表示覆盖写入。入。例如:例如:string path=D:test2.txt;StreamWriter writer=new StreamWriter(path,true,System.Text.Encoding.Default);以追加方式创建基于文件以追加方式创建基于文件D:test2.txt的输出流的输出流C#程序设计教程蒙祖强编著7.4 文本文件的读写文本文件的读写7.4.2 写文本文件写文本文件StreamWriter类供应的常用方法包括:类供应的常用方法包括:Write()方
35、法方法 该方法用于向输出流写入字符串、字符、字符数组、实数和整数该方法用于向输出流写入字符串、字符、字符数组、实数和整数等。它一共有等。它一共有17个重载版本,其中常用的包括:个重载版本,其中常用的包括:public override void Write(string value)public override void Write(char value)public override void Write(char buffer)public override void Write(double value)public override void Write(float value)pu
36、blic override void Write(decimal value)public override void Write(int value)public override void Write(long value)例如:例如:string path=D:test3.txt;StreamWriter writer=new StreamWriter(path,false,System.Text.Encoding.Default);writer.Write(aaaaaaa);writer.Write(BBBBB);/这两个语句相当于回车换行的作用这两个语句相当于回车换行的作用write
37、r.Write(r);writer.Write(n);writer.Write(ccccc);writer.Close();Write()方法执行完后,不会自方法执行完后,不会自动添加回车换行符。假如须要,动添加回车换行符。假如须要,必需显式添加。必需显式添加。C#程序设计教程蒙祖强编著7.4 文本文件的读写文本文件的读写7.4.2 写文本文件写文本文件WriteLine()方法方法 该方法与该方法与Write()方法的功能和用法基本相同,也是用于将字符方法的功能和用法基本相同,也是用于将字符串、字符、字符数组、实数和整数等写入输出流中。串、字符、字符数组、实数和整数等写入输出流中。主要不同之
38、处在于,主要不同之处在于,WriteLine()方法执行后会自动添加一个回方法执行后会自动添加一个回车换行符车换行符“rn”,而,而Write()方法没有方法没有。C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写二进制文件的读、写操作分别由二进制文件的读、写操作分别由BinaryReader类和类和BinaryWriter类来实现。类来实现。这两个类一般都要与这两个类一般都要与FileStream类结合运用,即由类结合运用,即由FileStream类创建文件流,类创建文件流,然后利用然后利用BinaryReader类和类和BinaryWriter类实现对文件流的读写操作,从类
39、实现对文件流的读写操作,从而实现对文件的读写操作。而实现对文件的读写操作。FileStream类供应一共类供应一共15个重载构造函数,常用的由两种:个重载构造函数,常用的由两种:public FileStream(string path,FileMode mode)public FileStream(string path,FileMode mode,FileAccess access)其中,其中,path:用于设置文件路径;:用于设置文件路径;access:用于对文件的访问方式,可能取值包括:用于对文件的访问方式,可能取值包括FileMode.Read、FileMode.Write、File
40、Mode.ReadWrite,分别表示只读、只写、可读写;,分别表示只读、只写、可读写;mode:其可能取值及其意义如下:其可能取值及其意义如下:C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写pFileMode.Append:表示以追加方式打开文件(打开后文件位置:表示以追加方式打开文件(打开后文件位置移动到文件的末尾),移动到文件的末尾),FileMode.Append仅可以与仅可以与FileAccess.Write联合运用。联合运用。pFileMode.Create:创建新的文件,假如已存在同名的文件,则:创建新的文件,假如已存在同名的文件,则覆盖它。覆盖它。pFile
41、Mode.CreateNew:创建新的文件,但假如已经存在同名的:创建新的文件,但假如已经存在同名的文件,则抛出异样。文件,则抛出异样。pFileMode.Open:打开已有的文件,但假如不存在所指定的文件,:打开已有的文件,但假如不存在所指定的文件,则抛出异样。则抛出异样。pFileMode.OpenOrCreate:假如文件已存在,则打开它,否则创:假如文件已存在,则打开它,否则创建新的文件。建新的文件。pFileMode.Truncate:打开已有的文件,当写入数据时将覆盖文:打开已有的文件,当写入数据时将覆盖文件中原有的数据,但文件的基本属性保持不变(如初始创建日期件中原有的数据,但文
42、件的基本属性保持不变(如初始创建日期等)。假如指定的文件不存在则抛出异样。等)。假如指定的文件不存在则抛出异样。C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写BinaryWriter类供应了两个本版的构造函数:类供应了两个本版的构造函数:public BinaryWriter(Stream output,)public BinaryWriter(Stream output,Encoding encoding)其中,参数其中,参数output用于设置流对象,通常是由用于设置流对象,通常是由FileStream类实例化类实例化的对象。的对象。7.5.1 写二进制文件写二进制文件
43、C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写BinaryWriter类常用的方法主要是:类常用的方法主要是:Write()方法方法 该方法一共重载了该方法一共重载了18个版本,其中大部分与个版本,其中大部分与StreamWriter类的类的Write()方法相同。方法相同。7.5.1 写二进制文件写二进制文件C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写例如:例如:string path=C:test.dat;FileStream fs=new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write
44、);BinaryWriter writer=new BinaryWriter(fs);writer.BaseStream.Seek(0,SeekOrigin.Begin);/设置当前位置设置当前位置writer.Write(中华人民共和国中华人民共和国);/写入数据写入数据writer.Close();fs.Close();7.5.1 写二进制文件写二进制文件写二进制文件的写二进制文件的关键代码关键代码 C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写类类BinaryReader供应很多用于读取输入流中的数据,主要包括:供应很多用于读取输入流中的数据,主要包括:public
45、abstract int Read(byte buffer,int index,int count)public abstract byte ReadByte()public abstract byte ReadBytes()public abstract char ReadChar()public abstract char ReadChars()public abstract decimal ReadDecimal()public abstract double ReadDouble()public abstract short ReadInt16()public abstract int
46、 ReadInt32()public abstract long ReadInt64()public abstract float ReadSingle()public abstract string ReadString()7.5.2 读二进制文件读二进制文件C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写string path=C:test.dat;FileStream fs=new FileStream(path,FileMode.Open);BinaryReader reader=new BinaryReader(fs);reader.BaseStream.Seek(
47、0,SeekOrigin.Begin);/设置当前位置设置当前位置/可通过推断可通过推断fs.Position是否等于是否等于fs.Length来断定是否已经读完来断定是否已经读完string s=reader.ReadString();reader.Close();fs.Close();7.5.2 读二进制文件读二进制文件读二进制文件的读二进制文件的关键代码关键代码 C#程序设计教程蒙祖强编著7.5 二进制文件的读写二进制文件的读写须须要要留留意意的的是是,读读文文件件语语句句的的写写法法和和依依次次完完全全由由写写文文件件的的格格式式来来确定,相应的语句要一一对应,不能有差错,否则将读出乱
48、码。确定,相应的语句要一一对应,不能有差错,否则将读出乱码。7.5.2 读二进制文件读二进制文件例例如如,下下列列的的写写文文件件语语句句和和读读文文件件语语句句必必须须一一一一对对应应,否否则则将将导导致错误读出数据:致错误读出数据:C#程序设计教程蒙祖强编著4 string path=C:test.dat;4 FileStream fs=new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write);4 BinaryWriter writer=new BinaryWriter(fs);4 writer.BaseStream.Seek(
49、0,SeekOrigin.Begin);/设置当前位置4 /写入数据4 writer.Write(网管);4 writer.Write(long)123);4 writer.Write(L);4 writer.Write(double)897.0);4 writer.Close();4 fs.Close();C#程序设计教程蒙祖强编著fs=new FileStream(path,FileMode.Open);BinaryReader reader=new BinaryReader(fs);reader.BaseStream.Seek(0,SeekOrigin.Begin);/设置当前位置 string str=reader.ReadString();richTextBox1.Text+=str;str=reader.ReadUInt64().ToString();str=reader.ReadString();/error richTextBox1.Text+=str;reader.Close();fs.Close();
限制150内