首页 > 编程语言 >C# File文件处理 删除文件

C# File文件处理 删除文件

时间:2023-03-07 13:25:11浏览次数:35  
标签:文件 string 删除 C# File using Delete

C# File文件处理 删除文件

 

在C# 程序开发中,我们往往会遇到很多文件上传,文件写入等对于文件的操作业务需要开发,文件处理也是任何应用程序的重要组成部分。C# 有几种创建,读取,更新和删除文件的方法。本文主要介绍C# File文件处理 删除文件。

 

1、删除文件

要使用C# 删除文件,可以使用File.Delete()方法或调用FileInfo对象的Delete()方法,例如,

1)调用File.Delete()方法删除文件

string sourceDir = @"c:\cjavapy";
string backupDir = @"c:\cjavapy\2018";
try
{
    string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
    string[] txtList = Directory.GetFiles(sourceDir, "*.txt");
    // 复制图片文件。
    foreach (string f in picList)
    {
        // 从文件名中删除路径。
        string fName = f.Substring(sourceDir.Length + 1);
        // 使用Path。组合方法可以安全地将文件名附加到路径。
        // 如果目标文件已经存在,将覆盖。
        File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
    }
    // 复制文本文件。
    foreach (string f in txtList)
    {
        // 从文件名中删除路径。
        string fName = f.Substring(sourceDir.Length + 1);
        try
        {
            // 如果目标文件已经存在,则不覆盖。
            File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
        }
        // 如果文件已被复制,则捕获异常。
        catch (IOException copyError)
        {
            Console.WriteLine(copyError.Message);
        }
    }
    // 删除已复制的源文件。
    foreach (string f in txtList)
    {
        File.Delete(f);
    }
    foreach (string f in picList)
    {
        File.Delete(f);
    }
}
catch (DirectoryNotFoundException dirNotFound)
{
    Console.WriteLine(dirNotFound.Message);
}

2)调用FileInfo对象的Delete()方法

using System;
using System.IO;
public class DeleteTest
{
    public static void Main()
    {
        // 创建对文件对象。
        FileInfo fi = new FileInfo("temp.txt");
        // 创建文件
        FileStream fs = fi.Create();
        // 根据需要修改文件,然后关闭文件。
        fs.Close();
        // 删除该文件。
        fi.Delete();
    }
}

2、删除文件夹

删除文件夹或删除文件下的所有文件及文件夹,都可以使用Directory.Delete()DirectoryInfo对象的Delete()方法,例如,

1)调用Directory.Delete()删除文件夹

using System;
using System.IO;
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string subPath = @"D:\cjavapy";
            try
            {
                Directory.CreateDirectory(subPath);
              //仅删除文件夹,并且文件夹不能有内容,否则需要每二个参数传true
                Directory.Delete(subPath);
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.Message);
            }
             //删除文件夹及所有子文件夹及文件
           try 
            {
                Directory.CreateDirectory(subPath);
                using (StreamWriter writer = File.CreateText(subPath + @"\example.txt"))
                {
                    writer.WriteLine("content added");
                }
                //需要传递两个参数
                Directory.Delete(topPath, true);
                bool directoryExists = Directory.Exists(topPath);
                Console.WriteLine("top-level directory exists: " + directoryExists);
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.Message);
            }
        }
    }
}

 

 

2)调用DirectoryInfo对象的Delete()删除文件夹

using System;
using System.IO;
class Test
{
    public static void Main()
    {
        // 指定要操作的目录。
        DirectoryInfo di1 = new DirectoryInfo(@"c:\cajvapy");
        try
        {
            // 创建目录。
            di1.Create();
            di1.CreateSubdirectory("temp");
            //此操作将不被允许,因为有子目录。
            Console.WriteLine("delete {0}", di1.Name);
           //仅删除文件夹,并且文件夹不能有内容,否则参数需要传true
            di1.Delete();
            Console.WriteLine("successful");
         DirectoryInfo di = new DirectoryInfo("TempDir");
         // 只有当目录不存在时才创建该目录。
         if (di.Exists == false)
             di.Create();
        // 在刚刚创建的目录中创建一个子目录。
        DirectoryInfo dis = di.CreateSubdirectory("SubDir");
        // 根据需要处理该目录。
        // ...
        // 删除子目录。true表示如果子目录
        // 或者文件在这个目录中,它们也将被删除。
        dis.Delete(true);
        // Delete the directory.
        di.Delete(true);
        }
        catch (Exception)
        {
            Console.WriteLine("The Delete operation failed as expected.");
        }
        finally {}
    }
}

3、使用递归方式删除目录及该目录下的所有文件及文件夹

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication
{
    class Program
    {
        public static void DeleteFolder(string deleteDirectory)
        {
            if (Directory.Exists(deleteDirectory))
            {
                foreach (string deleteFile in Directory.GetFileSystemEntries(deleteDirectory))
                {
                    if (File.Exists(deleteFile))
                        File.Delete(deleteFile);
                    else
                        DeleteFolder(deleteFile);
                }
                Directory.Delete(deleteDirectory);
            }
        }
        static void Main(string[] args)
        {
            string dir = @"c:\cjavapy";
            DeleteFolder(dir);
        }
    }
}

标签:文件,string,删除,C#,File,using,Delete
From: https://www.cnblogs.com/GaoUpUp/p/17187780.html

相关文章

  • C# File文件处理 读文件
    C#File文件处理读文件在C#程序开发中,我们往往会遇到很多文件上传,文件写入等对于文件的操作业务需要开发,文件处理也是任何应用程序的重要组成部分。C#有几种创......
  • .NET(C#) 中的程序集
    .NET(C#)中的程序集 程序集构成了.NET应用程序的部署、版本控制、重用、激活范围和安全权限的基本单元。程序集是为协同工作而生成的类型和资源的集合,这些......
  • C# 特性标签(Attribute)
    C#特性标签(Attribute)公共语言运行时使你能够添加类似于关键字的描述性声明(称为特性),以便批注编程元素(如类型、字段、方法和属性)。.NET出于多种原因且为解决许......
  • C# 索引器
    C#索引器 索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。索引器非常类似于属性,但索引器可以有参数列表,且只......
  • C# 反射(Reflection)
    C#反射(Reflection)反射提供描述程序集、模块和类型的对象(Type类型)。可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后调用......
  • C# 事件(event)
    C#事件(event) 事件是一种特殊的多播委托,仅可以从声明事件的类或结构中对其进行调用。类或对象可以通过事件向其他类或对象通知发生的相关事情。发送(或引发)事......
  • C# 委托(delegate)
    C#委托(delegate)委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-El......
  • RocketMQ高可用机制
    RocketMQ高可用机制集群部署模式1.单master模式2.多master模式配置配置文件broker.properties的brokerClusterName需要保持一致brokerId需要为0,0代表为0优缺点......
  • C# break和continue关键字
    C#break和continue关键字break跳出最里层的循环,并且继续执行该循环下面的语句。continue适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代......
  • C# 方法
    C#方法在C#的语言中,方法相当于其它语言中的函数,但是它与传统的函数也有着明确的不同:在结构化的语言中,整个程序是由一个个函数组成的;但是在面向对象的语言里,整个......