C#删除只读文件或文件夹(解决File.Delete无法删除文件)

C#删除只读文件的方法:

 if (File.GetAttributes(FFName).ToString().IndexOf("ReadOnly") != -1)
 File.SetAttributes(FFName, FileAttributes.Normal);
 File.Delete(FFName);//不能删除只读文件

C#删除只读文件夹的方法:

只读文件夹删除需要先删除文件夹内的文件,然后在使用删除文件夹才能成功,否则将会报没有权限访问。

下面是遍历删除文件夹代码

/// <summary>
    ///  用来遍历删除目录下的文件以及该文件夹
    /// </summary>
    public void DeleteFileByDirectory(DirectoryInfo info)
    {
      foreach (DirectoryInfo newInfo in info.GetDirectories())
      {
        DeleteFileByDirectory(newInfo);
      }
      foreach (FileInfo newInfo in info.GetFiles())
      {
        newInfo.Attributes = newInfo.Attributes &~(FileAttributes.Archive | FileAttributes.ReadOnly | FileAttributes.Hidden);
        newInfo.Delete();
      }
      info.Attributes = info.Attributes & ~(FileAttributes.Archive | FileAttributes.ReadOnly | FileAttributes.Hidden);
      info.Delete();

    }

另外说明:

在操作文件夹时候,在没有删除文件夹里面文件时候貌似对文件夹设置FileAttributes是没有效果,只有文件全部删除后才能设置文件夹属性。

(0)

相关推荐

  • C#实现彻底删除文件的方法

    本文实例讲述了C#实现彻底删除文件的方法.分享给大家供大家参考.具体实现方法如下: 经常用360的文件粉碎,删除隐私文件貌似还不错的.不过C#也可以实现彻底删除文件.试了下用360文件恢复恢复不了源文件了. 主要代码如下: 复制代码 代码如下: public class AbsoluteFile  {         public event EventHandler FinishDeleteFileEvent = null;         public event EventHandler

  • C# 对文件与文件夹的操作包括删除、移动与复制

    在.Net中,对文件(File)和文件夹(Folder)的操作可以使用File类和Directory类,也可以使用FileInfo类和DirectoryInfo类.文件夹(Folder)是只在Windows操作系统中使用的名词.在操作系统的理论中,人们更习惯于使用目录(Directory)这个名词.或许微软为了有朝一日将.Net移植到其他的操作系统中(实际上也有很多人也在做着这个项目),所以还是以Directory来命名操作文件夹的类. File类和Directory类都是静态类.使用它们的好处

  • C#删除文件夹和文件到回收站示例

    代码: 复制代码 代码如下: using System;using Microsoft.VisualBasic.FileIO;namespace leaver{class Program{ static void Main(string[] args){ Console.WriteLine("删除文件到回收站");string filepath = "leaver.txt";FileSystem.DeleteFile(filepath, UIOption.OnlyE

  • c# 文件(夹)创建与删除

    复制代码 代码如下: /删除文件夹,参数文件夹路径 protected void DeleteDirectory(string dir,bool deleteSubDir) { try { Directory.Delete(dir, deleteSubDir); } catch (Exception e) { logger.Error("DeleteDirectory Error dir = " + dir, e); throw new Exception("DeleteDi

  • C#删除文件目录或文件的解决方法

    复制代码 代码如下: /// 删除文件和目录public class Cleaner
{
   ///   /// 删除指定目录以及该目录下所有文件   ///   /// 欲删除文件或者目录的路径
     public static void Clean ( string dir )
{
          CleanFiles ( dir );//第一次删除文件
          CleanFiles ( dir );//第二次删除目录
     }

private static vo

  • c#使用filesystemwatcher实时监控文件目录的添加和删除

    首先,我们需要对.net提供的FileSystemWatcher类有所了解.我有些懒,找了MSDN对该类的描述. FileSystemWatcher类侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件. 使用 FileSystemWatcher 监视指定目录中的更改.可监视指定目录中的文件或子目录的更改.可以创建一个组件来监视本地计算机.网络驱动器或远程计算机上的文件. 若要监视所有文件中的更改,请将 Filter 属性设置为空字符串 ("") 或使用通配符("*

  • C#进行文件读写、创建、复制、移动、删除的方法

    本文实例讲述了C#进行文件读写.创建.复制.移动.删除的方法.分享给大家供大家参考.具体分析如下: 1.文件夹创建.移动.删除 //创建文件夹 Directory.CreateDirectory(Server.MapPath("a")); Directory.CreateDirectory(Server.MapPath("b")); Directory.CreateDirectory(Server.MapPath("c")); //移动b到a D

  • C#技巧之快速删除bin和obj文件夹的方法

    以下是批处理的代码: @echo offset nowPath=%cd%cd \cd %nowPath% ::delete specify file(*.pdb,*.vshost.*)for /r %nowPath% %%i in (*.pdb,*.vshost.*) do (del %%i) ::delete specify folder(obj,bin)for /r %nowPath% %%i in (obj,bin) do (IF EXIST %%i RD /s /q %%i) echo

  • c#删除指定文件夹中今天之前的文件

    1.说明 使用Directory类对指定文件夹下的今天或者更早日期之前的文件进行删除. 2.代码 //文件夹路径 string strFolderPath = Server.MapPath("~") + "\\excel\\"; DirectoryInfo dyInfo = new DirectoryInfo(strFolderPath); //获取文件夹下所有的文件 foreach (FileInfo feInfo in dyInfo.GetFiles()) {

  • c# 删除所有的空文件夹的小例子

    复制代码 代码如下: /// <summary>        /// 删除掉空文件夹        /// 所有没有子"文件系统"的都将被删除        /// </summary>        /// <param name="storagepath"></param>        public static void KillEmptyDirectory(String storagepath)      

随机推荐