zoukankan      html  css  js  c++  java
  • .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                 else
    21                 {
    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:WebSiteweb.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腾Desktop2.avi", FileMode.Create);
     7             //准备一个字节数组用于准备保存读出来的数据
     8             byte[] data = new byte[1024 * 1024 * 2];
     9             //读写操作
    10             int length = 0;
    11             do
    12             {
    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 Dog
    13     { }
    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         }
  • 相关阅读:
    hadoop集群单点配置
    CentOS6.x环境通过yum命令在线安装或重装zookeeper-server
    层层递进——宽度优先搜索(BFS)
    解救小哈——DFS算法举例
    浅谈深度优先搜索
    CodeCombat森林关卡Python代码
    用OpenGL进行曲线、曲面的绘制
    CodeCombat地牢关卡Python代码
    转载:程序员都应该访问的最佳网站
    用OpenGL实现动态的立体时钟
  • 原文地址:https://www.cnblogs.com/HuoAA/p/4058424.html
Copyright © 2011-2022 走看看