首页 > 代码库 > .NET基础回顾(七)
.NET基础回顾(七)
一.递归加载目录树
程序示例:
1 public partial class Form1 : Form 2 { 3 string path = @"D:\英雄联盟"; 4 5 public Form1() 6 { 7 InitializeComponent(); 8 } 9 10 private void LoadTree(string path, TreeNode node = null)11 {12 string[] dirs = Directory.GetDirectories(path);13 foreach (string dir in dirs)14 {15 TreeNode node1 = new TreeNode(Path.GetFileName(dir));16 if (node == null)17 {18 tvData.Nodes.Add(node1);19 }20 else21 {22 node.Nodes.Add(node1);23 }24 if (Directory.GetDirectories(dir).Length > 0)25 {26 LoadTree(dir,node1);27 }28 }29 }30 31 private void Form1_Load(object sender, EventArgs e)32 {33 LoadTree(path);34 }35 }
二.文件读写流操作
程序示例:
1 private void button1_Click(object sender, EventArgs e) 2 { 3 //通过文件流读取数据 4 FileStream stream = new FileStream(@"E:\WebSite\web.config",FileMode.Open); 5 byte[] buffer = new byte[1024*1024]; 6 stream.Read(buffer,0,buffer.Length); 7 string content = Encoding.Default.GetString(buffer); 8 txtContent.Text = content; 9 stream.Dispose();10 }11 12 private void button2_Click(object sender, EventArgs e)13 {14 //通过文件流写入数据15 SaveFileDialog sfd = new SaveFileDialog();16 DialogResult res = sfd.ShowDialog();17 if (res == DialogResult.OK)18 {19 FileStream stream = new FileStream(sfd.FileName,FileMode.Create);20 string content = txtContent.Text;21 byte[] buffer = Encoding.UTF8.GetBytes(content);22 stream.Write(buffer,0,buffer.Length);23 stream.Dispose();24 }25 //FileStream stream = new FileStream(@"C:\Users\腾\Desktop\");26 }
三.大文件拷贝
程序示例:
1 private void button3_Click(object sender, EventArgs e) 2 { 3 //准备用于读数据的文件流 4 FileStream streamReader = new FileStream(@"E:\教学视频\jQuery\第2天\1_shangwu1-样式操作1.avi", FileMode.Open); 5 //准备用于写数据的文件流 6 FileStream streamWriter = new FileStream(@"C:\Users\腾\Desktop\2.avi", FileMode.Create); 7 //准备一个字节数组用于准备保存读出来的数据 8 byte[] data = http://www.mamicode.com/new byte[1024 * 1024 * 2]; 9 //读写操作10 int length = 0;11 do12 {13 length = streamReader.Read(data, 0, data.Length);14 streamWriter.Write(data, 0, length);15 } while (length >= data.Length);16 //关闭文件流17 streamReader.Dispose();18 streamWriter.Dispose();19 MessageBox.Show("操作成功!");20 }21 小应用:可以在读取文件数据到byte数组中时修改数值,可以在一定程度上达到加密的效果。
四.Using的本质
1. 被Using管理的对象,出了{}就会被调用该对象的Dispose()方法。
2. 如果对象想要被Using管理,这个对象的类必须要实现IDisposeable接口。
3. using的本质其实就是try-catch,将using中的代码生成在try中,将调用对象的Disopose方法写在finally中,所以Dispose方法无论如何都会被调用。
五.序列化和反序列化
代码示例:
1 namespace 序列化和反序列化 2 { 3 [Serializable] 4 class Person 5 { 6 public string Name { get; set; } 7 public int Age { get; set; } 8 //public Dog dog; 9 }10 11 [Serializable]12 class Dog13 { }14 }15 16 static void Main(string[] args)17 {18 //需要将对象的状态保存起来 持久化19 //序列化:将对象的状态保存持久化到某一设备上(磁盘)20 //要将类标记为Serializable 这个类的对象才可以被序列化21 //以二进制方式序列化22 23 //序列化24 //Person p = new Person() { Age = 12,Name = "Rose"};25 //BinaryFormatter bf = new BinaryFormatter();26 //using (FileStream fs = new FileStream("se.bin", FileMode.Create))27 //{28 // bf.Serialize(fs,p);29 //}30 31 //反序列化32 BinaryFormatter bf = new BinaryFormatter();33 using (FileStream fs = new FileStream("se.bin", FileMode.Open))34 {35 object obj = bf.Deserialize(fs);36 Person p = obj as Person;37 Console.WriteLine(p.Name+":"+p.Age);38 }39 40 Console.ReadKey();41 }
.NET基础回顾(七)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。