小型资源管理器,IO操作,读取和写入文件和目录的常用操作

解决方案:

小型资源管理器,IO操作,读取和写入文件和目录的常用操作_第1张图片

 

 

小总结:

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

主页面:

小型资源管理器,IO操作,读取和写入文件和目录的常用操作_第2张图片

 

 

  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 
小型资源管理器,IO操作,读取和写入文件和目录的常用操作_第3张图片
 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         }
小型资源管理器,IO操作,读取和写入文件和目录的常用操作_第4张图片
92 //点击树状结构复制文件夹 93 /// 94 /// 95 /// 96 /// 源路径 97 /// 目标路径 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 }

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

你可能感兴趣的:(小型资源管理器,IO操作,读取和写入文件和目录的常用操作)