C# 文件操作之创建文件夹

2023-11-09

本文章主要是讲述C#中文件操作的基础知识,如何创建文件夹、创建文件、介绍Directory类\DirectoryInfo类和使用FolderBrowserDialog组件(文件夹对话框)。文章属于基础知识,参考了书籍刘丽霞《C#范例开发大全》,希望对大家有用!

一.界面设计

创建的C# Windows窗体应用程序,界面设计如下添加Lable控件、TextBox控件(其中textBox1可设置属性为只读)、Button控件和FolderBrowserDialog组件(文件夹对话框),点击"浏览按钮"时会弹出"浏览文件夹"的对话框供选择要创建文件夹的路径。同时输入创建个数点击"创建文件夹"按钮可以实现批量创建文件夹功能。

二.源代码

1.添加命名空间

在文件操作中,Directory类和DirectoryInfo类的命名空间都是system.IO:

using System.IO;

2.源代码

点击"浏览"按钮和“创建文件夹”按钮分别实现相应的Click事件,同时添加一个变量string path\filename记录创建文件夹的路径和文件夹名,代码如下:

//定义变量
string path = "";                                        //文件路径
string filename = "";                                    //文件夹名
//点击"浏览"按钮
private void button3_Click(object sender, EventArgs e)
{
    //使用文件对话框查找文件夹创建的路径
    if(folderBrowserDialog1.ShowDialog() == DialogResult.OK)   
    {
        path = this.folderBrowserDialog1.SelectedPath;  //获取用户选中路径
        textBox1.Text = path;                           //显示路径
    }
}
//点击"创建文件夹"按钮
private void button1_Click(object sender, EventArgs e)
{
    if (textBox2.Text == "")  //创建个数不为0
    {
        MessageBox.Show("请输入创建文件夹的个数!");
        return;
    }
    //Convert将一个基本数据类型转换为另一个数据类型
    int num = Convert.ToInt32(textBox2.Text);             //创建文件夹个数
    //循环创建文件夹
    for (int i = 0; i < num; i++)
    {
        filename = path + "\\新建文件夹" + i.ToString();    //组合路径
        Directory.CreateDirectory(filename);              //创建文件夹
    }
    MessageBox.Show("文件夹创建成功!");
}

3.运行结果

选择路径后,点击"创建"按钮就会在相应目录下创建文件夹,如果想创建txt文件可以用File.Create(string path)创建;建议在程序中尽量使用try..catch进行异常信息处理。上面核心知识有两点:(后面将详细介绍)
                      (1).使用FolderBrowserDialog组件获取创建文件夹路径;
                      (2).使用Directory类提供的静态方法CreateDirectory()实现创建文件夹.

三.FolderBrowserDialog组件

在winform程序中我们经常需要使用FolderBrowserDialog组件打开相应路径,该控件的运行结果如下图所示:

它的实现代码基本如下:

//FolderBrowserDialog:文件对话框获取文件夹创建的路径
//方法一:调用folderBrowserDialog1
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)   //DialogResult获取对话框结果"确定"
{
    path = this.folderBrowserDialog1.SelectedPath;         //获取用户选中路径
    textBox1.Text = path;                                  //显示路径
}
//方法二:动态实例FolderBrowserDialog控件
FolderBrowserDialog folder = new FolderBrowserDialog();
if (folder.ShowDialog() == DialogResult.OK)
{
    path = folder.SelectedPath;                            //获取用户选中路径
    textBox1.Text = path;                                  //显示路径
}

它提供一种方法提示用户浏览、创建并最终选择一个文件夹,但不可以选择文件;通过浏览树型结构呈现。其中我们使用的SelectedPath属性是获取或设置用户选定的路径(详解MSDN)。同时与它类似的控件还有保存文件位置对话框saveFileDialog控件和打开对话框OpenFileDialog控件:

//实例
SaveFileDialog folder = new SaveFileDialog();
folder.Filter = "网页文件(*.htm)|*.htm|ASP.NET文件(*.aspx)|*.aspx";    
//打开保存对话框 点击"确定"按钮执行  
if (folder.ShowDialog() == DialogResult.OK)
{
    //读取数据、写入数据操作 如:
    stream.ReadToEnd();
    stream.Write();
    stream.Close();
}

四.Directory类和DirectoryInfo类

Directory类用于创建、移动和枚举目录和子目录的实例方法。无法继承此类,其命名空间为System.IO;上面代码中主要采用Directory提供的静态方法CreateDirectory()创建文件夹;而Directoryinfo类是实例类,这两个类包含的大部分方法都是相同的,典型操作有创建、复制、移动、重命名和删除。如果打算多次重用某个对象应考虑使用DirectoryInfo实例方法,而不是Directory静态方法,因为并不总需要安全检查。下面介绍一些简单的方法:

//Directory
Directory.Exists("e:\\file");                //检查文件是否存在
Directory.CreateDirectory("e:\\file");       //创建文件夹
Directory.Delete("e:\\file");                //删除文件夹
Directory.GetCreationTime("e:\\nba");        //获取目录的创建时间和日期(dateTime型->ToString)
Directory.GetCurrentDirectory();             //获取应用程序当前目录(返回值string)
Directory.GetFiles("e:\\");                  //获取目录中文件名称
string[] files = Directory.GetFiles("e:\\");
Directory.GetDirectoryRoot("e:\\file");       //获取路径根目录
Directory.Move("E:\\","F:\\");                //移动文件夹(E移动到F)
Directory.SetCreationTime(string,DateTime);   //设置文件目录创建时间日期
//DirectoryInfo
DirectoryInfo dir = new DirectoryInfo(path);  //实例对象
dir.GetFileSystemInfos();                     //获取目录中所有文件盒子目录
dir.GetFiles();                               //返回当前目录文件列表
dir.MoveTo(string);                           //移动文件或重命名

参考 http://msdn.microsoft.com/zh-cn/library/System.IO.DirectoryInfo(v=vs.80).aspx

五.总结

文章主要介绍基于Directory类和DirectoryInfo类的文件夹、文件操作的基础知识,其中通过例子介绍了FolderBrowserDialog组件等知识,文章最后感谢MSDN中的一些知识和《C#范例开发大全》书籍及作者。同时写该文章主要原是对自己学习该知识的一个总结与记录,可能内容很简单也不是很实用,但还是希望文章对大家有所帮助。如果有错误或不足之处,见谅!

(By:Eastmount 2013-9-21 下午4点 http://blog.csdn.net/eastmount/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 文件操作之创建文件夹 的相关文章

随机推荐

  • QT源码剖析-QT对象通信机制信号槽的绑定具体实现

    本文详细介绍QT核心机制之一 信号和槽 我们在此根据Qt源代码一步一步探究其信号槽的实现过程 核心知识点 模板元编程技术 Qt moc预编译机制 QObject类 目录 1 QObject类介绍 2 相关助手类介绍 2 1 类型 函数指针
  • pip安装出现Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '

    问题描述 pip安装库或者更新pip版本时出现如下问题 Could not install packages due to an EnvironmentError Errno 2 No such file or directory c us
  • LeetCode 面试题01.09 字符串轮转

    题目 字符串轮转 给定两个字符串s1和s2 请编写代码检查s2是否为s1旋转而成 比如 waterbottle 是 erbottlewat 旋转后的字符串 示例1 输入 s1 waterbottle s2 erbottlewat 输出 Tr
  • 一个独特的开源插件evil.js

    前言 最近发现一个好玩有解压的开源插件 注意 不可使用在正式项目中 这里分享下 gitee地址 evil js 此代码仅在周日的时候执行以下逻辑 声明 请勿用于任何项目 如果导致任何问题 与本人无关https gitee com haoxi
  • 矩阵LU分解

    一 矩阵LU分解定理 设A为n阶矩阵 如果A的顺序主子式Di 0 i 1 2 n 1 则A可以分解为一个单位下三角矩阵L和一个上三角矩阵U的乘积 且这种分解是唯一的 即A LU 二 矩阵LU分解Python代码 自己原创 def lu de
  • 第十二章 - 条件判断(case when 和 if)和视图

    第十二章 条件判断 case when 和 if 和视图 view if 的用法 case when 的用法 视图 view 的用法 if 的用法 通过使用if函数可以实现数据二分类或者多分类的功能 比如按年龄区分青年 中年 老年 或者按价
  • Python2_Pandas库(数据读取)

    1 数据读取 food info csv数据 import pandas food info pandas read csv food info csv read csv函数读取csv数据文件 print type food info Da
  • 汇编笔记——判断大小

    判断指令 CMP AL num 判断条件 这里的JA JB JE JMP相当于goto命令 JA L0 A gt above AL比num大 执行L0 JB L1 B gt below AL比num小 执行L1 JE L2 E gt equ
  • 树结构转List

    使用LinkedList效率更高 1 单个顶级节点 public static List
  • 网络安全(黑客技术)自学笔记

    目录 一 自学网络安全学习的误区和陷阱 二 学习网络安全的一些前期准备 三 网络安全学习路线 四 学习资料的推荐 想自学网络安全 黑客技术 首先你得了解什么是网络安全 什么是黑客 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队
  • chromium之jumplist

    chrome在win7及之后系统添加jumplist功能 jumplist即系统任务栏相关的功能 包括任务栏图标 鼠标放置后视图 进度条 右键菜单等等 路径 chromium src chrome browser win jumplist
  • 21. 合并两个有序链表

    21 合并两个有序链表 简单 将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成的 输入 l1 1 2 4 l2 1 3 4 输出 1 1 2 3 4 4 示例 2 输入 l1 l2 输出 示例 3
  • vue 阻止事件冒泡,捕获方法

    要想了解 VUE 阻止事件冒泡和捕获方法 首先要了解一下 JS 事件和 JS 阻止事件冒泡 捕获方法 1 js 事件的三阶段 捕获阶段 目标阶段 执行当前对象的事件处理程序 冒泡阶段 2 js 阻止事件冒泡 捕获 阻止事件冒泡 event
  • OceanBase 安全审计之透明加密

    承接前文 OceanBase 安全审计的 传输加密 本文主要实践数据透明加密 并验证加密是否有效 作者 张乾 外星人2号 兼任四位喵星人的铲屎官 爱可生开源社区出品 原创内容未经授权不得随意使用 转载请联系小编并注明来源 本文约 1200
  • layui导入Excel文件

    具体如下图所示 首先 导入layui第三方插件js 地址 https fly layui com extend excel 1 在页面中引入excel js文件 引入excel layui config base layui ext ext
  • NOIP 1998 普及组 复赛 幂次方

    NOIP 1998 普及组 复赛 幂次方 1208 2的幂次方表示 此文代码与本人极其相似 唯一不同就是此文代码成功了 http www cnblogs com bofengyu p 4477355 html 思路 先打印2 7 2 3 2
  • 【死磕 Java 基础】--- 我一口气自己就动手实现一个 LRU

    大家好 我是大明哥 个人网站 https www topjava cn LRU 即 Least Recently Use 直译为 最近最少使用 它是根据数据的历史访问记录来进行数据淘汰的 淘汰掉最先访问的数据 其核心思想是 如果数据最近被访
  • UE4_编辑器UMG关闭窗口不能立刻销毁UMG

    问题描述 运行UMG 使之创建显示到视口 效果如下 点击关闭按钮 再次运行该UMG 使之显示到视口 通过在c 中获取该UMG的数量 发现数量为2 不是所预计得1 导致编写得代码出现bug 修改办法 截图如下 该解决办法不是实用所有程序 因为
  • Linux IPC之内存映射mmap()

    导言 如何使用mmap 系统调用来创建内存映射 它可以用于IPC以及其他很多方面 概述 mmap 系统调用 在调用进程的虚拟地址空间中创建一个新内存映射 映射分为两种 文件映射 内存映射文件 将一个文件的一部分直接映射到调用进程的虚拟内存中
  • C# 文件操作之创建文件夹

    本文章主要是讲述C 中文件操作的基础知识 如何创建文件夹 创建文件 介绍Directory类 DirectoryInfo类和使用FolderBrowserDialog组件 文件夹对话框 文章属于基础知识 参考了书籍刘丽霞 C 范例开发大全