小型资源管理器,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,粘贴
- 冰球项目日志1-yjw
第一次小组讨论结果 功能需求分析 通过已知输入:球位置速度,击球手位置速度.确定输出:击球手击球时速度,击球点位置,击球手轨迹. 功能分解 1 通过当前的球位置速度,判断是否会进入我方球门,以判断是否 ...
- Python之路 day2 字典练习题之 三级菜单
#Author:ersa ''' 程序: 三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 ''' menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{ ...
- table清除样式大全
table{width:100%;text-align:center;border-collapse:collapse;border-spacing:1;border-spacing:0; }tabl ...
- Android和iOS常用命令学习(真机)
1. 安装应用: Android: adb install xxx.apk iOS: ideviceinstaller -i xxx.ipa 2. 卸载应用 Android: abd uninstal ...
- DOM操作方法的简单归纳
(1)要在每个匹配的元素中插入新元素,使用: .append() .appendTo() .prepend() .prependTo() (2)要在每个匹配的元素相邻的位置上插入新元素,使用: . ...
- 本周psp(11月17-23)
本周psp进度 11月19号 内容 开始时间 结束时间 打断时间 净时间 发布读书笔记 11:05 11:25 0 20m 看构建之法书 9:50 10:48 5m 53m 11月20号 内容 开始时 ...
- JavaScript函数定义和调用 变量作用域
本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 JavaScript中函数定义可以是这样的格式 function 函数名(参数) { 函数体 } 也可以是这样的格式 ...
- 前端面试题2016--HTML
本文由我收集总结了一些前端面试题,初学者阅后也要用心钻研其中的原理,重要知识需要系统学习.透彻学习,形成自己的知识链.万不可投机取巧,临时抱佛脚只求面试侥幸混过关是错误的!也是不可能的!不可能的!不可 ...
- Mac +WebStorm+nodeJs+Freemarker.js的安装与使用
第一步用webStorm新建node+express项目 第二步执行npm i –save freemarker.js,安装 freemarker.js 模块 第三步安装java jdk包 jdk包地 ...