.NET创建、删除、复制文件夹及其子文件的实例方法
发布时间:2022-12-29 06:32:45
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace WinFormsApp_OperateFileAndFolder
{
public class OperateFileFolder
{
/// <summary>
/// 创建文件夹
/// </summary>
public string CreateFolder(string argPath)
{
string returnStr = "";
try
{
if (System.IO.Directory.Exists(argPath))
{
returnStr = "该文件夹已经存在";
return returnStr;
}
else
{
System.IO.DirectoryInfo dirinfo = System.IO.Directory.CreateDirectory(argPath);
returnStr = "成功创建该文件夹!创建时间为:" + System.IO.Directory.GetCreationTime(argPath);
}
}
catch (Exception ee)
{
returnStr = "处理失败! 失败的原因是:" + ee.ToString();
}
return returnStr;
}
/// <summary>
/// 递归删除文件夹及文件
/// </summary>
/// <param name="dir"></param>
public void DeleteFolder(string dir)
{
//取消屏蔽 执行该方法后,可以保留根文件夹(仅删除目录下的所有子)
//// 检查目标目录是否以目录分割字符结束如果不是则添加之
//if (dir[dir.Length - 1] != Path.DirectorySeparatorChar)
// dir += Path.DirectorySeparatorChar;
if (Directory.Exists(dir)) //如果存在这个文件夹删除之
{
foreach (string d in Directory.GetFileSystemEntries(dir))
{
if (File.Exists(d))
File.Delete(d); //直接删除其中的文件
else
DeleteFolder(d); //递归删除子文件夹
}
Directory.Delete(dir); //删除已空文件夹
Console.Write(dir + " 文件夹删除成功");
}
else
Console.Write(dir + " 该文件夹不存在"); //如果文件夹不存在则提示
}
/// <summary>
/// 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面
/// 如果目标文件夹为只读属性就会报错。
/// </summary>
public static void CopyDir(string srcPath, string aimPath)
{
try
{
// 检查目标目录是否以目录分割字符结束如果不是则添加之
if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
aimPath += Path.DirectorySeparatorChar;
// 判断目标目录是否存在如果不存在则新建之
if (!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
// 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
// string[] fileList = Directory.GetFiles(srcPath);
string[] fileList = Directory.GetFileSystemEntries(srcPath);
// 遍历所有的文件和目录
foreach (string file in fileList)
{
// 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
if (Directory.Exists(file))
CopyDir(file, aimPath + Path.GetFileName(file));
// 否则直接Copy文件
else
File.Copy(file, aimPath + Path.GetFileName(file), true);
}
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.ToString());
}
}
}
}


猜你喜欢
- 通过本文你可以用非常简短的代码替代业务逻辑中的判null校验,并且很容易的在出现空指针的时候进行打日志或其他操作。注:如果对Java8新特性
- 一般表单数据分为两类<form method="post" action="${pageContext.
- 在 javax.validation.constraints包中定义了非常多的校验注解,引入依赖:<dependency> &n
- 1.官网下载JDK:1.1下载地址:https://www.oracle.com/java/technologies/javase-down
- 前言今天是2021LOL全球总决赛,一直不被大家看好的EDG冲到了决赛对战韩国队的DK,可以说EDG面对如此强大的对手,想赢是比较难的,为了
- 本文实例为大家分享了Unity3D实现批量下载图片功能的具体代码,供大家参考,具体内容如下下一篇文章试试用线程下载代码如下using Sys
- 概述从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.链表链表 (Linked List) 是一种递归的动态数
- ofType和javaType的区别JavaType和ofType都是用来指定对象类型的,但是JavaType是用来指定pojo中属性的类型
- 核心配置文件mybatis-config.xml 系统核心配置文件MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属
- 1.alibaba falstjson1.Map转JSONMap<String, Object> map = new HashM
- 1.阻塞I/O模型阻塞IO模型是常见的IO模型,在读写数据时客户端会发生阻塞。阻塞IO模型的工作流程为:1.1在用户线程发出IO请求之后,内
- 思想利用栈和队列都可以实现树的迭代遍历。递归的写法将这个遍历的过程交给系统的堆栈去实现了,所以思想都是一样的、无非就是插入值的时机不一样。利
- SpringBoot如何快速配置数据源;有如下两种方式:通过spring-boot-starter-jdbc快速配置数据源自定义数据源Dat
- 1.首先,需要指定获取的文件夹,以及获取文件的文件名;文件夹:strLocalPath = System.Windows.Forms.App
- 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如:
- 一. String对象的比较1. ==比较是否引用同一个对象注意:对于内置类型,==比较的是变量中的值;对于引用类型 , == 比较的是引用
- 本文为个人理解,不保证完全正确。官方文档中将双冒号的用法分为4类,按照我的个人理解可以分成2类来使用。官方文档官方文档中将双冒号的用法分为了
- 目录基本用法基于接口的 * 基于类的 * 异步函数拦截Autofac 集成基于接口的 * 基于类的 * 异步函数拦截Castle 是 200
- Properties属性文件中的值有等号和换行Spring配置Shiro的过滤器时,有个filterChainDefinitions属性,值
- 本文以实例形式讲述了C#应用BindingSource实现数据同步的方法,对C#数据库程序开发来说具有一定的参考借鉴价值。具体实现方法如下: