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

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

private void Form1_Load(object sender, EventArgs e)
{ //创建一个根节点
TreeNode root = new TreeNode();
root.Text = "D:\\"; //显示的是文件夹名称(单独名称)
root.Tag = "D:\\"; //保存文件夹的绝对路径 tvExplore.Nodes.Add(root); //加载d盘下的所有子文件夹 //01.在左边的TreeView控件上加载D盘下所有的文件
//02.在TreeView只显示文件夹
//03.选中节点的文件在右边ListView中显示 } private string path;
private DirectoryInfo info; public void LoadDirectory(TreeNode selectNode)
{
selectNode.Nodes.Clear();
//02.加载该路径下(selectNode.Tag.ToString())所有的文件夹
path = selectNode.Tag.ToString();
info = new DirectoryInfo(path);
DirectoryInfo[] directorys = info.GetDirectories();
foreach (DirectoryInfo directoryInfo in directorys)
{
//每遍历到一个DirectoryInfo对象,就在TreeView上创建一个节点
TreeNode tn = new TreeNode();
tn.Text = directoryInfo.Name;
tn.Tag = directoryInfo.FullName; selectNode.Nodes.Add(tn);
}
}

//加载所有文件
public void LoadALlFiles()
{
lvFiles.Items.Clear();
//03.加载当前选中节点下的所有文件
FileInfo[] files = info.GetFiles();
foreach (FileInfo file in files)
{
//每遍历到一个file对象,形成ListView上的一条记录
ListViewItem lvitem = new ListViewItem(file.Name);
lvitem.SubItems.Add(file.Length*1.0// + "MB"); //文件大小
//文件类型(扩展名)
lvitem.SubItems.Add(file.Extension);
//文件路径
lvitem.SubItems.Add(file.FullName);
lvFiles.Items.Add(lvitem);
}
}
private void tvExplore_AfterSelect(object sender, TreeViewEventArgs e)
{
//01.获取选中的节点对象
TreeNode selectNode = tvExplore.SelectedNode;
//02.加载当前节点的文件夹
LoadDirectory(selectNode);
LoadALlFiles();
}
private void lvFiles_DoubleClick(object sender, EventArgs e)
{
//获取选中文件的路径列
string path = lvFiles.SelectedItems[].SubItems[].Text;
Process.Start(path);
}
private void button1_Click(object sender, EventArgs e)
{
}
private void tisiCopy_Click(object sender, EventArgs e)
{
//获取用户选中的tv中的节点
TreeNode selectNode=tvExplore.SelectedNode;
string path=selectNode.Tag.ToString();
DialogResult dr=folderBrowserDialog1.ShowDialog();
if (dr==DialogResult.OK)
{
CopyDirectory(path,folderBrowserDialog1.SelectedPath);
}
}

//点击树状结构复制文件夹
/// <summary>
///
/// </summary>
/// <param name="srcdir">源路径</param>
/// <param name="desdir">目标路径</param>
private void CopyDirectory(string srcdir, string desdir)
{
//D:\\美图
string folderName = srcdir.Substring(srcdir.LastIndexOf("\\") + );
string desfolderdir = desdir + "\\" + folderName;
if (desdir.LastIndexOf("\\") == (desdir.Length - ))
{
desfolderdir = desdir + folderName;
}
string[] filenames = Directory.GetFileSystemEntries(srcdir);
foreach (string file in filenames)// 遍历所有的文件和目录
{
if (Directory.Exists(file))// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
{
string currentdir = desfolderdir + "\\" + file.Substring(file.LastIndexOf("\\") + );
if (!Directory.Exists(currentdir))
{
Directory.CreateDirectory(currentdir);
}
CopyDirectory(file, desfolderdir);
}
else // 否则直接copy文件
{
string srcfileName = file.Substring(file.LastIndexOf("\\") + );
srcfileName = desfolderdir + "\\" + srcfileName;
if (!Directory.Exists(desfolderdir))
{
Directory.CreateDirectory(desfolderdir);
}
File.Copy(file, srcfileName);
}
}//foreach
}
完结待续………………………………
小型资源管理器,IO操作,读取和写入文件和目录的常用操作的更多相关文章
- IO流读取和写入文件
package com.xmlmysql.demo.config; import java.io.BufferedReader; import java.io.BufferedWriter; impo ...
- 初识IO流之小型资源管理器
初次接触到IO流,根据书本上的知识,加上自己的摸索,发现了一些好玩的事情.(书本上的知识或多或少,有时候不足以解决我们的问题!这时候我们就应该自己去求解!!! 所以我们学习的时候要抱有探索的精神,求知 ...
- IO流的应用————小型资源管理器
小型资源管理器 private void LoadTreeView() { DirectoryInfo dir = new DirectoryInfo(@"E:\"); Direc ...
- C# 小型资源管理器
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- AtomicLong可以被原子地读取和写入的底层long值的操作
java.util.concurrent.atomic.AtomicLong类提供了可以被原子地读取和写入的底层long值的操作,并且还包含高级原子操作. AtomicLong支持基础long类型变量 ...
- 实现1.双击自动关联文件类型打开 2.PC所有驱动器 3.小型资源管理器
感谢各位这里实现:双击自动关联文件类型打开 2.PC所有驱动器 3.小型资源管理器!! 首先主页面: 2.运用DriveInfo驱动器的信息:获得整个系统磁盘驱动!!,运用frorach循环遍历到Tr ...
- 读取和写入 文件 (NSFIleManger 与 NSFileHandle)
读取和写入 文件 //传递文件路径方法 -(id)initPath:(NSString *)srcPath targetPath:(NSString *)targetPath { self = [su ...
- JS读取/创建本地文件及目录文件夹的方法
原文链接:http://www.cnblogs.com/ayan/archive/2013/04/22/3036072.html 注:以下操作只在IE下有效! Javascript是网页制作中离不开的 ...
- File类的特点?如何创建File类对象?Java中如何操作文件内容,什么是Io流Io流如何读取和写入文件?字节缓冲流使用原则?
重难点提示 学习目标 1.能够了解File类的特点(存在的意义,构造方法,常见方法) 2.能够了解什么是IO流以及分类(IO流的概述以及分类) 3.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- 完美解释if-modified-since/not-modified 文件头的意义
http://www.cnblogs.com/zh2000g/archive/2010/03/22/1692002.html 很好很强大
- stm32定时器中断类型分析
一直在用的stm32定时器的中断都是TIM_IT_Update更新中断,也没问为什么,直到碰到有人使用TIM_IT_CC1中断,才想到这定时器的中断类型究竟有什么区别,都怪当时学习stm32的时候不够 ...
- react+redux完整项目
地址:https://segmentfault.com/a/1190000007642740?utm_source=tuicool&utm_medium=referral
- java, listmap2json, fastjson
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;impor ...
- ubuntu16.04安装virtualbox5.1失败 gcc:error:unrecognized command line option ‘-fstack-protector-strong’
系统:ubuntu16.04.1 软件:Virtualbox-5.1 编译器:GCC 4.7.4 在如上环境下安装Vbx5.1提示我在终端执行/sbin/vboxconfig命令 照做 出现如下err ...
- Python学习笔记之Beautiful Soup
如何在Python3.x中使用Beautiful Soup 1.BeautifulSoup中文文档:http://www.crummy.com/software/BeautifulSoup/bs3/d ...
- BADI
BADI_MATERIAL_CHECK BOM_UPDATE MB_MIGO_BADI ME_GUI_PO_CUST ME_PROCESS_PO_CUST ME_REQ_POSTED WORKORDE ...
- Eclipse 创建maven项目
新建maven project
- BZOJ3000 Big Number
由Stirling公式: $$n! \approx \sqrt{2 \pi n} (\frac{n}{e})^n$$ 故:$$\begin{align} ans &= log_k n! + 1 ...
- linux 下安装PHP的IMAP扩展实现邮件收发
系统CentOS 6.5 PHP5.5.19 1.安装imap的依赖包: [root@iZ9482lp6yqZ]# yum install -y libc-client-* 没有安装编译错误提示: ...