小型资源管理器,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.能够掌握字节输出流的使用(继承体系结构介绍以及常见的 ...
随机推荐
- web 打开子窗口提交数据或其他操作后 关闭子窗口且刷新父窗口实现
父页面 : html连接:<a href="javascript:void(0)" onclick="window.open(子页面URL)">js ...
- 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
转载自脚本之家 http://www.jb51.net/article/51831.htm 作者:忙碌的松鼠 对于大型网站如facebook,ebay等网站,如果没有Memcache做为中间缓存层, ...
- mac 安装php7
卸载php55 brew unlink php55 brew install homebrew/php/php70 安装成功信息 To enable PHP in Apache add the fol ...
- SQLServer解析xml到Oracle
写了一个程序:根据状态位读取SQLserver 中的一张表,下载其中一个字段的值,这个值是XML类型的,然后把这个XML文件的内容插入到另一Oracle数据库,并更新SQLServer表的标志位,表示 ...
- css动画与js动画的区别
CSS动画 优点: (1)浏览器可以对动画进行优化. 1. 浏览器使用与 requestAnimationFrame 类似的机制,requestAnimationFrame比起setTimeout ...
- Migrating an ASP.NET MVC application to ADFS authentication
I recently built an ASP.NET application at work to help track internal use of our products. It's bee ...
- 学习PYTHON之路, DAY 8 - PYTHON 基础 8 (面向对象进阶)
类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...
- C# WebForm内置对象2+Repeater的Command
内置对象:用于页面之间的数据交互 为什么要使用这么内置对象?因为HTTP的无状态性. Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及 ...
- linux PHP 编译安装参数详解
linux PHP 编译安装参数详解 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...
- 用markdown学习写出总结
# PS### 快捷键:CTRL+N(新建)CTRL+1. **切片**- 套索,磁性套索,椭圆,矩形选框.2. **印章** 仿制图章工具,图案图章工具3. 钢笔4. 油漆桶5. 吸管工具, *** ...