小型资源管理器,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.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- excle表格生成网页
用Dreamweaver可以方便生成和excle表格一样的代码. 复制excle,粘贴
- webstorm node 3000端口被占用
首先说明我的问题原因,一个服务端程序用3000端口打开后,未关闭,直接强制关闭的webstorm,关闭的时候提示disconnect了,也点击了,但是打开另外一个文件,再用3000端口打开的话会提示被 ...
- JQuery validate.js 在ajax提交form时如何触发
在使用jquery validate.js 插件时,发现,如果是用onclick事件捕获提交按钮的动作,并且ajax动态提交form,验证不会被触发,而是直接提交了form. 后来发现,需要手动调用该 ...
- .NET 框架程序使用 Win32 API
.NET 框架程序可以通过静态 DLL 入口点的方式来访问本机代码库.DllImport 属性用于指定包含外部方法的实现的dll 位置. DllImport 属性定义如下: na ...
- wmic 命令的一个汇总,功能很强大
获得系统版本信息wmic datafile where Name='c:\\windows\\explorer.exe' get Manufacturer,Version,Filename 获得系统进 ...
- 直接在 CSS 中引用 FONTAWESOME 图标(附码表)
直接在 CSS 中引用 FONTAWESOME 图标(附码表) 因此我们如果不想用 Fontawesome 提供的类,只想在 css 里面引用图标的话,可以这样子,请自行脑补: .icon:befor ...
- mata属性
声明文档使用的字符编码: <meta charset="utf-8" />声明文档的兼容模式: <meta http-equiv=" ...
- Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)
Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue) ...
- Swiper说明&&API手册 【中文手册Swiper】
原文地址:http://www.cnblogs.com/scavengers/p/3760449.html 示例: <link rel="stylesheet" href= ...
- Swift 03.Dictionary
字典 key它必须是可哈希的,也就是说,它必须能够提供一个方式让自己被唯一表示出来.Swift的所有基础类型(例如String.Int.Double和Bool)默认都是可哈希的,这些类型都能够用作字典 ...