知识大全 C#实现文件管理器—by henryqin
Posted 文件
篇首语:愿君学长松,慎勿作桃李。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#实现文件管理器—by henryqin相关的知识,希望对你有一定的参考价值。
C#实现文件管理器—by henryqin 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在教程中 我会把需要特别注意的东东写出来 所以估计要写的内容还是比较多 但由于最近几天比较忙哈 我可能会分几天时间把教程补充完整 谢谢!
本例 完成的东东是一个文件管理器 Windows资源管理器山寨版 算是一个很简单的教程吧 不涉及数据库 只是做一个winform程序 如果要做成web形式的 基本相同 只需要作小部分地修改 当然 这个文件管理器还存在很多不足 有待于功能和界面上的完善 本例主要是提供给那些和我一样是菜菜的爱好者进行学习 高手呢 可以飘过 当然 能留下您宝贵的指导是最好的 嘿嘿
下面详细介绍这个小程序能实现的功能 包括TXET文本的新建 复制 粘贴 删除和撤销等文件操作 对文本字体的操作:粗体 下划线和斜体 包括文本夹的新建 复制 粘贴 删除等文件夹操作 五种查看方式:列表 小图标 大图标 标题和详细
软件界面文件管理器主界面进入驱动器D盘后的界面新建文件界面新建文件夹界面文本文档界面
System IOSystem IO命名空间很重要 它包含了许多的类 以便让托管应用程序可以通过同步或异步方式提供文本I/O以及其他形式的输入和输出方式 从而操作文件系统或流的输入和输出操作 System IO的命名空间相当庞大 在本例中 主要用到以下几个方面
File类:它提供了打开 创建 复制 移动 重命名文件以及读写文件属性的静态方法 Directory类:它为目录提供编程接口 使应用程序可以通过简单的方法来创建 删除目录 FileStream类:它允许将文件作为流访问 实现标准的输出 输入操作 可随机的访问文件内容 StreamReader与StreamWriter类:它们支持对文本的读写操作 让应用程序可以访问文件或信息流
下面 简要说一下在例子中用到的几个控件及它们的属性
ListView通过ListView控件 可以在标准视图对话框中进行各种操作(查看 打开文件等) 本例中 主要用到以下功能 View: a LargeIcon:所有选项都在其旁边显示一个大图标和一个标签 b SmallIcon:所有选项都在其旁边显示一个小图标和一个标签 c List:只显示一列 该列可以包含一个图标和一个标签 d Details:可以显示任意数量的列 只有第一列可以包含图像 SelectedItems:这个属性包含了选中选项的集合 MultiSelect:这个属性设置为true 用户可以选择多个选项 LargeImageList:这个属性包含ImageList 其中ImageList包含ListView中要使用的图像 当View属性为LargeIcon时 可以使用图像 SmallImageList:这个属性包含ImageList 其中ImageList包含ListView中要使用的图像 当View属性为SmallIcon时 可以使用图像
ImageListImageList 控件包含 ListImage 对象的集合 该集合中的每个对象都可以通过其索引或关键字被引用 ImageList 控件不能独立使用 只是作为一个便于向其它控件提供图象的资料中心 语法 ImageListImageList 控件的作用象图像的储藏室 同时 它需要第二个控件显示所储存的图像 第二个控件可以是任何能显示图像 Picture 对象的控件 也可以是特别设计的 用于绑定 ImageList 控件的 Windows 通用控件之一 这些控件包括ListView ToolBar TabStrip Header ImageCombo 和 TreeView 控件 为了与这些控件一同使用 ImageList 必须通过一个适当的属性将特定的 ImageList控件绑定到第二个控件 对于 ListView 控件 必须设置其 Icons 和 SmallIcons 属性为 ImageList 控件 对于 TreeView TabStrip ImageCombo 和 Toolbar 控件 必须设置 ImageList 属性为 ImageList 控件 在设计时 可以用 ImageList 控件属性 对话框的 图像 选项卡来添加图象 在运行时 可以用 Add 方法给 ListImages 集合添加图象
ContextMenuStripContextMenuStrip 控件提供了与某个控件关联的快捷菜单 也就是说通过这个控件可以方便的实现在别的控件上弹出右键快捷菜单 例子 先添加一个ContextMenuStrip 控件到Form上 设置目标控件(如窗体 文本框等)的ContextMenuStrip属性 指向你刚才添加的ContextMenuStrip 控件 这样就实现了两者的关联 动态将一些菜单项添加到 ContextMenuStrip 控件中 如 //上下文菜单项 ContextMenuStrip Items Add(msEditNew); ContextMenuStrip Items Add(msEditBar ); ContextMenuStrip Items Add(msEditCut); ContextMenuStrip Items Add(msEditPaste); ContextMenuStrip Items Add(msEditDelete); ContextMenuStrip Items Add(msEditBar ); 这样就OK了 你在目标控件上按右键时将弹出快捷菜单
通过上面的介绍 大家应该能明白本例中要实现的效果 需要用到的控件及重要属性等 下面 就可以切入正题 如何通过编程 实现我们上面提到的功能 呵呵 再提一点 也是比较重要的 C#是一种面向对象的编程语言 因此 在编程之前我们就要有 面向对象编程 的思想 在编程的过程中贯彻这样的思想 同时 这也是符合目前公司里的编程思想 还有一点 尽量做到代码的规范 可以为以后再次开发或别人阅读我们程序起到简便明了的作用
主要有两个类 Folder cs和Txt cs 分别是对文件和文本的相关操作 类里的方法 我都做了详尽的注释 如果还有什么不明白 可以联系我
Folder cs
CODE:
using System;using System Collections Generic;using System Text;using System Windows Forms;using System IO;
namespace FileManager Class public class Folder /// <summary> /// 新建文件夹 /// </summary> /// <param name= filename >文件夹名</param> /// <param name= path >文件夹路径</param> public static void NewFolder(string foldername string path) foldername Trim(); //如果输入信息为空 提示 if (foldername == ) MessageBox Show( 目录名不能为空 ); return; else string FullName = path + \\\\ + foldername; //如果该文件以及存在 if (Directory Exists(FullName)) MessageBox Show( 该目录已经存在 请重命名 ); return; else //新建文件夹 Directory CreateDirectory(FullName);
/// <summary> /// 新建文件夹(Enter键触发) /// </summary> /// <param name= filename >文件夹名</param> /// <param name= path >文件夹路径</param> public static void Enter(string foldername string path) foldername Trim(); if (foldername == ) MessageBox Show( 目录名不能为空! ); return; else if (Directory Exists(path + \\\\ + foldername)) MessageBox Show( 该目录以及存在 请重新命名 ); return; else Directory CreateDirectory(path + \\\\ + foldername);
/// <summary> /// //获取文件夹名
截取 \\ /// </summary> /// <param name= DirectoryPath >文件夹完整路径</param> /// <returns></returns> internal static int DirectoryName(string DirectoryPath) int j = ; char[] c = DirectoryPath ToCharArray(); for (int i = c Length ; i >= ; i )//从后面截取 j = i; if (c[i] ToString() == \\\\ ) break;//遇 \\ 调处 并返回 \\ 的位置 return j + ; /// <summary> /// 在指定目录下新建一个文件夹 /// </summary> /// <param name= path ></param> /// <param name= name ></param> public static void CreateDir(string path string name) Directory CreateDirectory(path + \\\\ + name);
/// <summary> /// 复制文件 /// </summary> /// <param name= oldDir >原文件所在文件夹路径</param> /// <param name= Name >文件名</param> /// <param name= newDir >新文件夹路径</param> public static void CopyFile(string oldDir string Name string newDir) File Copy(oldDir + \\\\ + Name newDir + \\\\ + Name);
/// <summary> /// 复制文件 /// </summary> /// <param name= oldDir >原文件所在文件夹路径</param> /// <param name= newDir >新文件夹路径</param> public static void CopyFile(string oldDir string newDir) string name = oldDir Substring(DirectoryName(oldDir)); File Copy(oldDir newDir + \\\\ + name);
/// <summary> /// 删除指定文件夹 /// </summary> /// <param name= strDir >文件夹完整路径</param> /// <param name= recursive >是否删除文件夹子项</param> public static void DeleteFolder(string strDir bool recursive) Directory Delete(strDir recursive);
/// <summary> /// 返回指定路径的DirectoryInfo /// </summary> /// <returns></returns> public static DirectoryInfo GetDir(string path) return new DirectoryInfo(path); Txt cs
CODE:
using System;using System Collections Generic;using System Text;using System Windows Forms;using System IO;using System Drawing;
namespace FileManager Class public class Txt public Txt()
/// <summary> /// 新建文件 /// </summary> /// <param name= filename >文件名</param> /// <param name= path >文件路径</param> public static void NewFile(string filename string path) filename Trim(); if (filename == ) MessageBox Show( 文件名不能为空~! ); else if (File Exists(path + \\\\ + filename+ txt )) MessageBox Show( 该文件名已经存在 请重命名 ); else string FullName = path + \\\\ + filename + txt ; //获得文件完整信息 StreamWriter Sw = File CreateText(FullName); /// <summary> /// 新建文件(Enter键触发) /// </summary> /// <param name= filename >文件名</param> /// <param name= path >文件路径</param> public static void Enter(string filename string path) filename Trim(); if (filename == ) MessageBox Show( 文件名不能为空~! ); else if (File Exists(path + \\\\ + filename+ txt )) MessageBox Show( 该文件名已经存在 请重命名 ); else string FullName = path + \\\\ + filename + txt ; //获得文件完整信息 StreamWriter Sw = File CreateText(FullName); /// <summary> /// 读取显示 /// </summary> /// <param name= filename >文本文件名</param> /// <param name= contents >内容</param> public static string Display(string filename) //读取显示 try string contents; FileStream fs = new FileStream(filename FileMode Open FileAccess Read); //读出所打开的文本文件 StreamReader reader = new StreamReader(fs); //实例化一个streamreader contents = reader ReadToEnd(); //将数据显示 fs Close(); return contents; catch (Exception ex) MessageBox Show(ex Message); return ; /// <summary> /// 打开 /// </summary> /// <param name= ofd >打开对话框</param> /// <param name= fullname >文本文件名</param> /// <param name= contents >内容</param> public static void Open(OpenFileDialog ofd string fullname string contents) //打开文本 try if (ofd ShowDialog() == DialogResult OK) string fileName = ofd FileName; //文件名 FileStream fs = new FileStream(fileName FileMode Open FileAccess Read); StreamReader reader = new StreamReader(fs); fullname = fileName; contents = reader ReadToEnd(); fs Close(); catch (Exception ex) MessageBox Show(ex Message); /// <summary> /// 保存 /// </summary> /// <param name= fullname >文本文件名</param> /// <param name= contents >内容</param> public static void Save(string fullname string contents) //保存 try StreamWriter writer = new StreamWriter(fullname); writer Write(contents); //用write()方法把txtContent的数据写入文件 writer Close(); catch (Exception ex) MessageBox Show(ex Message); /// <summary> /// 另存为 /// </summary> /// <param name= sfd >保存对话框</param> /// <param name= contents >内容</param> public static void SaveAs(SaveFileDialog sfd string contents) if (sfd ShowDialog() == DialogResult OK) string fileName = sfd FileName; try Stream stream = File OpenWrite(fileName); using (StreamWriter writer = new StreamWriter(stream)) writer Write(contents); writer Close(); catch (Exception ex) MessageBox Show(ex Message); /// <summary> /// 粗体 /// </summary> /// <param name= rtb ></param> public static void Bold(RichTextBox rtb) Font newFont = new Font(rtb SelectionFont (rtb SelectionFont Bold ? rtb SelectionFont Style & ~FontStyle Bold : rtb SelectionFont Style | FontStyle Bold)); rtb SelectionFont = newFont; /// <summary> /// 斜体 /// </summary> /// <param name= rtb ></param> public static void Italic(RichTextBox rtb) Font newFont = new Font(rtb SelectionFont (rtb SelectionFont Italic ? rtb SelectionFont Style & ~FontStyle Italic : rtb SelectionFont Style | FontStyle Italic)); rtb SelectionFont = newFont; /// <summary> /// 下划线 /// </summary> /// <param name= rtb ></param> public static void Underline(RichTextBox rtb) Font newFont = new Font(rtb SelectionFont (rtb SelectionFont Underline ? rtb SelectionFont Style & ~FontStyle Underline : rtb SelectionFont Style | FontStyle Underline)); rtb SelectionFont = newFont; /// <summary> /// 复制 /// </summary> /// <param name= rtb ></param> public static void Copy(RichTextBox rtb) if (rtb SelectedText Equals( )) return; Clipboard SetDataObject(rtb SelectedText true); /// <summary> /// 剪切 /// </summary> /// <param name= rtb ></param> public static void Cut(RichTextBox rtb) if (rtb SelectedText Length > ) try rtb Cut(); catch (Exception ex) MessageBox Show(ex Message); /// <summary> /// 粘贴 /// </summary> /// <param name= rtb ></param> public static void Paste(RichTextBox rtb) rtb Paste(); /// <summary> /// 退出 /// </summary> /// <param name= fullname >文本文件全名</param> /// <param name= contents >内容</param> public static void Exit(string fullname string contents) if (MessageBox Show( 是否保存文件
提示 MessageBoxButtons OKCancel) == DialogResult OK) try StreamWriter writer = new StreamWriter(fullname); writer Write(contents); //用write()方法把txtContent的数据写入文件 writer Close(); catch (Exception ex) MessageBox Show(ex Message); /// <summary> /// 在指定目录新建一个文本文件 /// </summary> /// <param name= path ></param> /// <param name= name ></param> /// <returns></returns> public static StreamWriter CreateText(string path string name) return File CreateText(path + \\\\ + name);
cha138/Article/program/net/201311/11857相关参考
C#文件操作全收录 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文收集了目前最为常用的C#经
C#检查文件夹和文件是否存在 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
根据现有C#代码文件生成扩展代码文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为什么在这里
C#代码文件生成扩展代码文件的想法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 看到这标题的朋
C#删除多重文件夹 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一个根文件夹底下包含多级目录每
C#转换图片文件格式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 将图片转换为另一种格式的图像
C#读写ini配置文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! NETFramework类
在C#中如何读取配置文件[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 配置文件概述 应
C#打开SolidWorks2008零件文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 起因
C#用jquery多个文件上传 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! <%@Pag