北大青鸟ACCP4.0教程之C#课件_12
第 十二 章 C# 中的文件处理
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
回顾多数编程语言都提供数组这种数据结构,用以存储属于相 同类型的多个数据元素 可以使用 Array 类的 CreateInstance 方法来创建Array对 象,也可以直接定义数组对象 集合可用于管理在运行时动态创建的元素项 System.Collections 命名空间提供一组接口和类,让用户 可以对一组数据元素执行各种集合操作 用户可以通过 HashTable 类将数据、键值作为一组来存 储,这些数据是根据键值进行组织的 Array 类属于 System 命名空间,而 ArrayList 类属于 System.Collections 命名空间 ArrayList在Array的基础上提供了动态的特性2ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
目标了解System.IO 命名空间; 掌握读写文本文件的方法; 掌握向文件读写二进制数据的方法; 掌握读写内存流的方法;
3
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
System.IO 命名空间 4-1另存为 .xls 文件
另存为 .bmp 文 件
另存为 .txt 文件
4
以字节形式向磁盘写数据通常称为字节流。存储在磁盘上的 字节集合称为文件 ACCP
V4.0
北大青鸟ACCP4.0教程之C#课件_12
System.IO 命名空间 4-2File对象 静态方法Move Delete Copy CreateText OpenText Open
5
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
System.IO 命名空间 4-3试一试: 把C:\WinNT\Win.INI文件拷贝到C:\下的代码,怎么写?
6
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
System.IO 命名空间 4-4FileInfo类和File类两者都提供对文件类似的操作 FileInfo不是静态对象 FileInfo提供了实例成员,因此不是线程安全的,不会 因为安全检查而降低效率
7
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
读写文本文件 3-1System.IO 命名空间 File 类
静态方法CreateText(string FilePath) OpenText(string FilePath) Open(string FilePath, FileMode) Create(string FilePath) OpenRead(string FilePath) AppendText(string FilePath)8
继承类
FileStream 类
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
读写文本文件 3-2FileStream 构造函数
FileStream 已重写构造函数 FileStream(string FilePath, FileMode) FileStream(string FilePath, FileMode, FileAccess) FileStream(string FilePath, FileMode, FileAccess, FileShare) 在构造函数中使用的 FileMode、FileAccess 和 FileShare 参数都是 enum 类型
9
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
FileMode 和FileShareFileMode FileShareAppend None ………… Create Read FileStream fstream = new FileStream("Test.cs", FileMode.OpenOrCreate, CreateNew Write FileAccess.ReadWrite, FileShare.None); ReadWrite Open ……… OpenOrCreate Truncate
10
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
文件读写例子 4-1
11
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
FileStream fs; try { fs = File.Create(txtFileName.Text); } 创建文件 catch { MessageBox.Show("建立文件时出错。","错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); return; }
文件读写例子
byte[] content = new UTF8Encoding(true).GetBytes(txtContent.Text); try { fs.Write(content, 0, content.Length); fs.Flush(); MessageBox.Show("保存成功", "保存", 将转换后的Byte数组写入新建的文本文件 System.Windows.Forms.MessageBoxButto
ns.OK, http://rmation); } catch { MessageBox.Show("写入文件时出错。","错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); } finally { fs.Close(); } ACCP V4.0 }
北大青鸟ACCP4.0教程之C#课件_12
文件读写例子 4-3class FileReadDemo { public static void Main() { string path; Console.WriteLine ( "输入要读取的文件名。指定带路径的完整名称:"); path = Console.ReadLine (); try 检查文件是否存在 { if (!File.Exists(path)) { Console.WriteLine("文件不存在"); } else { 打开文件流 // 打开流以进行读取。 FileStream fs = File.OpenRead(path);13ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
文件读写例子 4-4//创建一个 byte 数组以读取数据 byte[] arr = new byte[100]; UTF8Encoding data = new UTF8Encoding(true); //继续读文件直到读取文件中的所有数据 while (fs.Read(arr,0,arr.Length) > 0) { Console.WriteLine(data.GetString(arr)); } } }
FileStream.Read() 用于从指定文件读取数据
catch(Exception ex) { Console.WriteLine(“发生错误:" + ex.Message); } } }
14
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
读写二进制文件要使用 BinaryReader 和 BinaryWriter 类 这两个对象都需要在FileStream上创建
FileStream filestream = new FileStream(Filename, FileMode.Create); BinaryWriter objBinaryWriter = new BinaryWriter(filestream);
15
ACCP V4.0
北大青鸟ACCP4.0教程之C#课件_12
二进制文件读写对象BinaryReaderClose() Read() ReadDecimal() ReadByte() ReadInt16() ReadInt32() ReadString()
BinaryWriterClose() Flush() Write()
16
ACCP V4.0