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 }

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

  • 相关阅读:
    Codeforces 1316B String Modification
    Codeforces 1305C Kuroni and Impossible Calculation
    Codeforces 1305B Kuroni and Simple Strings
    Codeforces 1321D Navigation System
    Codeforces 1321C Remove Adjacent
    Codeforces 1321B Journey Planning
    Operating systems Chapter 6
    Operating systems Chapter 5
    Abandoned country HDU
    Computer HDU
  • 原文地址:https://www.cnblogs.com/xiaotangtang/p/4655912.html
Copyright © 2011-2022 走看看