《第8章对象持久性—文件管理.ppt》由会员分享,可在线阅读,更多相关《第8章对象持久性—文件管理.ppt(33页珍藏版)》请在三一文库上搜索。
1、第8章 对象持久性文件管理,1,文件和流,File类 复制文件 替换文件 移动文件 删除文件,File.copy(C:a.txt, C:b.txt); File.Replace(C:a.txt, D:a.txt); File.Move(C:a.txt, D:a.txt); File.Delete(C:b.txt);,2,转义符,文件和流,File类 时间属性 GetCreationTime, GetLastAccessTime, GetLastWriteTime, Set. 文档属性 FileAttributes GetAttributes() Normal, Achieve, Readonl
2、y, Hidden. 读写文本 ReadAllText, WriteAllText, ReadAllLines, WriteAllLines,3,4,Demo 文本文件读写,文件和流,FileStream 创建,FileStream fsl = File.Creat(C:a.txt);,5,文件和流,FileStream 创建 写入,FileStream fsl = File.Creat(C:a.txt); for (byte x=1;x=10;x+) fsl.WriteByte(x);,6,文件和流,FileStream 创建 写入 关闭,FileStream fsl = File.Crea
3、t(C:a.txt); for (byte x=1;x=10;x+) fsl.WriteByte(x); fsl.close();,7,文件和流,FileStream 打开文件 创建文件,FileStream fs1 = File.Open(C:a.txt, FileMode.Open); fs1 = File.Open(C:a.txt, FileMode.OpenOrCreate); fs1 = File.Open(C:a.txt, FileMode.CreateNew); fs1 = File.Open(C:a.txt, FileMode.Create);,8,文件不存在发生异常,文件已存
4、在发生异常,文件和流,FileStream 读写方式: Read, Write, ReadWrite,fs1 = File.Open(C:a.txt, FileMode.Open, FileAccess.Read); if (fs1.CanWrite) fs1.Write(new byte 1,2,3,5,7,11,13);,9,文件和流,FileStream 读写位置,fs1 = File.Open(C:a.txt, FileMode.Open);,10,FileStream.Position,文件和流,FileStream 读写位置,fs1 = File.Open(C:a.txt, Fil
5、eMode.Open); fs1.ReadByte();,11,FileStream.Position,文件和流,FileStream 读写位置,fs1 = File.Open(C:a.txt, FileMode.Open); fs1.ReadByte(); fs1.Write(new byte1,2,4);,12,FileStream.Position,文件和流,FileStream 读写位置,fs1 = File.Open(C:a.txt, FileMode.Open); fs1.ReadByte(); fs1.Write(new byte1,2,4); fs1.Seek(2);,13,F
6、ileStream.Position,文件和流,FileStream 读写位置,fs1 = File.Open(C:a.txt, FileMode.Open); fs1.ReadByte(); fs1.Write(new byte1,2,4); fs1.Seek(-3);,14,FileStream.Position,15,Demo 流文件读写,流的读写器,BinaryWriter 创建,FileStream fsl = File.Creat(C:a.txt); BinaryWriter bw1 = new BinaryWriter(fs1);,16,流的读写器,BinaryWriter 创建
7、 写入,FileStream fsl = File.Creat(C:a.txt); BinaryWriter bw1 = new BinaryWriter(fs1); bw1.Write(1000); bw1.Write(3.14); bw1.Write(z); bw1.Write(ABC);,17,流的读写器,BinaryWriter 创建 写入 关闭,FileStream fsl = File.Creat(C:a.txt); BinaryWriter bw1 = new BinaryWriter(fs1); bw1.Write(1000); bw1.Write(3.14); bw1.Wri
8、te(z); bw1.Write(ABC); bw1.Close(); fs1.Close();,18,流的读写器,BinaryReader 创建,FileStream fsl = File.Open(C:a.txt); BinaryReader br1 = new BinaryReader(fs1);,19,流的读写器,BinaryReader 创建 读取,FileStream fsl = File.Open(C:a.txt); BinaryReader br1 = new BinaryReader(fs1); int x = br1.ReadInt32(); double y = br1.
9、ReadDouble(); char a = br1.ReadChar(); string s = br1.ReadString();,20,流的读写器,BinaryReader 创建 读取 关闭,FileStream fsl = File.Open(C:a.txt); BinaryReader br1 = new BinaryReader(fs1); int x = br1.ReadInt32(); double y = br1.ReadDouble(); char a = br1.ReadChar(); string s = br1.ReadString(); br1.Close(); f
10、s1.Close();,21,22,Demo 流的二进制读写,流的读写器,StreamWriter 创建 写入 关闭,FileStream fsl = File.Creat(C:a.txt); StreamWriter sw1 = new StreamWriter(fs1); sw1.Write(1000); sw1.Write(3.14); sw1.Write(z); sw1.Write(0年1月,2008,8); sw1.Close(); fs1.Close();,23,流的读写器,StreamReader 创建 读取 关闭,FileStream fsl = File.Open(C:a.t
11、xt); StreamReader sr1 = new StreamReader(fs1); int x = sr1.Read(); char chs = new char3; sr1.Read(chs, 0, 3); string s = sr1.ReadLine(); sr1.Close(); fs1.Close();,24,25,Demo 流的文本读写,26,文件对话框,OpenFileDialog dlg1 = new OpenFileDialog(); dlg1.Filter = 文本文件(*.txt)|*.txt; if (dlg1.ShowDialog() = DialogRes
12、ult.OK) FileStream fs1 = File.Open(dlg1.FileName);,27,文件对话框,SaveFileDialog dlg1 = new SaveFileDialog(); dlg1.Filter = 网页文件(*.htm;*.html)|*.hml;*.html; if (dlg1.ShowDialog() = DialogResult.OK) FileStream fs1 = File.Create(dlg1.FileName);,对象持久性,28,学生 Save() Load(),对象持久性,.NET自动持久性 自动保存字段信息,Serializable
13、() public class Student private string department; public string Department get return name; set name = value; . ,29,对象持久性,.NET自动持久性 自动保存字段信息 无需保存的字段,Serializable() public class Student private string department; public string Department get return name; set name = value; . NonSerializable private s
14、tring department; ,30,对象持久性,.NET自动持久性 串行化,Student s1 = new Student(800001,王小红); FileStream fs1 = new Filestream(a.txt, FileMode.Create); BinaryFormatter bf1 = new BinaryFormatter(); bf1.Serialize(fs1, s1); fs1.Close();,31,对象持久性,.NET自动持久性 反串行化,FileStream fs1 = new FileStream(a1.txt, FileMode.Open); Student s1 = bf1.Deserialize(fs1); fs1.Close();,32,33,本章习题,采用同样的方式,BinaryWriter和StreamWriter写入文件的内容有何不同? 简述文件存储在对象系统中的应用。 简述.NET对对象持久性的支持。 使用文本读写器实现图书馆管理系统的对象持久性。 如何将多个对象的信息存储在一个文件中?,