小型资源管理器,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.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- Head First 设计模式-- 总结
模式汇总:装饰者 :包装一个对象以得到新的行为状态 :封装了基于状态的行为,并使用委托在行为之间切换迭代器 :在对象的结合中游走,而不暴露集合的实现外观 :简化一群类的接口策略 :封装可以 ...
- i.
史上最全web.xml配置文件元素详解 一.web.xml配置文件常用元素及其意义预览 <!--servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立.修改和删除会话或 ...
- spring框架学习(二)依赖注入
spring框架为我们提供了三种注入方式,分别是set注入,构造方法注入,接口注入.接口注入不作要求,下面介绍前两种方式. 1,set注入 采用属性的set方法进行初始化,就成为set注入. 1)给普 ...
- R语言实战(一)介绍、数据集与图形初阶
本文对应<R语言实战>前3章,因为里面大部分内容已经比较熟悉,所以在这里只是起一个索引的作用. 第1章 R语言介绍 获取帮助函数 help(), ? 查看函数帮助 exampl ...
- 自定义Spring Security权限控制管理(实战篇)
上篇<话说Spring Security权限管理(源码)>介绍了Spring Security权限控制管理的源码及实现,然而某些情况下,它默认的实现并不能满足我们项目的实际需求,有时候需要 ...
- jquery.validate:
jqueryValidation: jquery-UI 小组组长;https://jqueryvalidation.org/;从页面性能的角度来说: 最好是把js的引入放在结束的body标签上面;基本 ...
- The hierarchy of the type is inconsistent错误问题
在springMVC的AOP 面向切面编程中,引用: package com.ah.aop; import java.lang.reflect.Method; import org.springfra ...
- [css3]水平垂直居中
position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
- Eclipse插件开发中对于Jar包和类文件引用的处理(彻底解决插件开发中的NoClassDefFoundError问题)(转)
目的:Eclipse插件开发中,经常要引用第三方包或者是引用其他插件中的类,由于插件开发环境引用类路径的设置和运行平台引用类路径的设置不同,经常导致开发过程OK,一旦运行则出现NoClassDefFo ...
- JSTL跳出<c:forEach>循环
<c:forEach items="${consultPager.dataList }" var="consult"> <tr> < ...