zoukankan      html  css  js  c++  java
  • 小型资源管理器,IO操作,读取和写入文件和目录的常用操作

    解决方案:

    小总结:

    用IO流,的file,DirectoryInfo的方法绑定Treeview控件上和删除,读取,
    可以熟练掌握一下IO流

    主页面:

      1    private void Form1_Load(object sender, EventArgs e)
      2         {
      3             
      4             //创建一个根节点
      5             TreeNode root = new TreeNode();
      6             root.Text = "D:\"; //显示的是文件夹名称(单独名称)
      7             root.Tag = "D:\"; //保存文件夹的绝对路径
      8 
      9             tvExplore.Nodes.Add(root);
     10 
     11 
     12             //加载d盘下的所有子文件夹
     13 
     14             //01.在左边的TreeView控件上加载D盘下所有的文件
     15             //02.在TreeView只显示文件夹
     16             //03.选中节点的文件在右边ListView中显示
     17 
     18         }
     19 
     20         private string path;
     21         private DirectoryInfo info;
     22 
     23         public void LoadDirectory(TreeNode selectNode)
     24         {
     25             selectNode.Nodes.Clear();
     26             //02.加载该路径下(selectNode.Tag.ToString())所有的文件夹
     27             path = selectNode.Tag.ToString();
     28             info = new DirectoryInfo(path);
     29             DirectoryInfo[] directorys = info.GetDirectories();
     30             foreach (DirectoryInfo directoryInfo in directorys)
     31             {
     32                 //每遍历到一个DirectoryInfo对象,就在TreeView上创建一个节点
     33                 TreeNode tn = new TreeNode();
     34                 tn.Text = directoryInfo.Name;
     35                 tn.Tag = directoryInfo.FullName;
     36 
     37                 selectNode.Nodes.Add(tn);
     38             }
     39         }
     40 
     41         //加载所有文件
     42         public void LoadALlFiles()
     43         {
     44             lvFiles.Items.Clear();
     45             //03.加载当前选中节点下的所有文件
     46             FileInfo[] files = info.GetFiles();
     47             foreach (FileInfo file in files)
     48             {
     49                 //每遍历到一个file对象,形成ListView上的一条记录
     50                 ListViewItem lvitem = new ListViewItem(file.Name);
     51                 lvitem.SubItems.Add(file.Length*1.0/1024/1024 + "MB"); //文件大小
     52                 //文件类型(扩展名)
     53                 lvitem.SubItems.Add(file.Extension);
     54                 //文件路径
     55                 lvitem.SubItems.Add(file.FullName);
     56                 lvFiles.Items.Add(lvitem);
     57             }
     58         }
     59 
     60         private void tvExplore_AfterSelect(object sender, TreeViewEventArgs e)
     61         {
     62             //01.获取选中的节点对象
     63             TreeNode selectNode = tvExplore.SelectedNode;
     64             //02.加载当前节点的文件夹
     65             LoadDirectory(selectNode);
     66             LoadALlFiles();
     67         }
     68 
     69         private void lvFiles_DoubleClick(object sender, EventArgs e)
     70         {
     71             //获取选中文件的路径列
     72             string path = lvFiles.SelectedItems[0].SubItems[3].Text;
     73             Process.Start(path);
     74         }
     75 
     76         private void button1_Click(object sender, EventArgs e)
     77         {
     78             
     79         }
     80 
     81         private void tisiCopy_Click(object sender, EventArgs e)
     82         {
     83             //获取用户选中的tv中的节点
     84             TreeNode selectNode=tvExplore.SelectedNode;
     85             string path=selectNode.Tag.ToString();
     86             DialogResult dr=folderBrowserDialog1.ShowDialog();
     87             if (dr==DialogResult.OK)
     88             {
     89                 CopyDirectory(path,folderBrowserDialog1.SelectedPath);
     90             }
     91         }
    92 //点击树状结构复制文件夹 93 /// <summary> 94 /// 95 /// </summary> 96 /// <param name="srcdir">源路径</param> 97 /// <param name="desdir">目标路径</param> 98 private void CopyDirectory(string srcdir, string desdir) 99 { 100 //D:\美图 101 string folderName = srcdir.Substring(srcdir.LastIndexOf("\") + 1); 102 103 string desfolderdir = desdir + "\" + folderName; 104 105 if (desdir.LastIndexOf("\") == (desdir.Length - 1)) 106 { 107 desfolderdir = desdir + folderName; 108 } 109 string[] filenames = Directory.GetFileSystemEntries(srcdir); 110 111 foreach (string file in filenames)// 遍历所有的文件和目录 112 { 113 if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件 114 { 115 116 string currentdir = desfolderdir + "\" + file.Substring(file.LastIndexOf("\") + 1); 117 if (!Directory.Exists(currentdir)) 118 { 119 Directory.CreateDirectory(currentdir); 120 } 121 122 CopyDirectory(file, desfolderdir); 123 } 124 125 else // 否则直接copy文件 126 { 127 string srcfileName = file.Substring(file.LastIndexOf("\") + 1); 128 129 srcfileName = desfolderdir + "\" + srcfileName; 130 131 132 if (!Directory.Exists(desfolderdir)) 133 { 134 Directory.CreateDirectory(desfolderdir); 135 } 136 137 138 File.Copy(file, srcfileName); 139 } 140 }//foreach 141 }

    完结待续………………………………

  • 相关阅读:
    C#数组的使用
    CLR设计类型之接口
    CLR类型设计之泛型(二)
    CLR类型设计之泛型(一)
    CLR类型设计之属性
    CLR类型设计之参数传递
    CLR类型设计之方法与构造器
    将博客搬至CSDN
    Unity_与android交互
    CSS3制作hover下划线动画
  • 原文地址:https://www.cnblogs.com/xiaotangtang/p/4655912.html
Copyright © 2011-2022 走看看