09-刪除目錄及文件操做

文件操做基礎知識:數組

Directory //操做目錄(文件夾),靜態類。
DirectoryInfo //文件夾的一個「類」,實例類。用來描述一個文件夾對象(獲取指定目錄下的全部目錄時返回一個DirectoryInfo數組。返回文件夾數組)
FileInfo //文件類,實例類。用來描述一個文件對象。獲取指定目錄下的全部文件時,返回一個FileInfo數組。

例:刪除F:\a下全部文件夾及文件夾裏文件:spa

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace _06刪除文件夾操做
{
    class Program
    {
        static void Main(string[] args)
        {
            //==============刪除F:\a下全部文件夾及文件夾裏文件===========
            #region 一、最直接作法
            string[] demoDirs = Directory.GetDirectories(@"F:\a");//獲取該目錄下全部的文件夾
            string[] demoFiles = Directory.GetFiles(@"F:\a");//獲取該目錄下全部的文件

            //刪除文件夾操做
            if (demoDirs.Length > 0)
            {
                foreach (var item in demoDirs)
                {
                    Directory.Delete(item, true);//true表示子文件夾不爲空時也刪除
                }
            }
            //刪除文件操做
            if (demoFiles.Length > 0)
            {
                foreach (var item in demoFiles)
                {
                    File.Delete(item);
                }
            } 
            #endregion
        }
    }
}

假設 Directory.Delete(item, true),不能使用true。code

思路:使用遞歸方法,先刪除每一個目錄下的文件,而後再刪除文件夾,代碼以下:對象

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace _06刪除文件夾操做
{
    class Program
    {
        static void Main(string[] args)
        {
            //==============刪除F:\a下全部文件夾及文件夾裏文件===========
            //二、DirectoryInfo操做文件夾類,FileInfo操做文件類,遞歸
            DirectoryInfo dirInfo = new DirectoryInfo(@"F:\a");
            DeleteDir(dirInfo);
            dirInfo.Delete();//最後再刪除該目錄
        }

        static void DeleteDir(DirectoryInfo dirInfo)
        {
            DirectoryInfo[] dirInfos = dirInfo.GetDirectories();
            FileInfo[] fileInfos = dirInfo.GetFiles();
            if (fileInfos.Length > 0)
            {
                foreach (var file in fileInfos)
                {
                    file.Delete();//刪除該目錄下文件
                }
            }
            if (dirInfos.Length > 0)
            {
                foreach (var dir in dirInfos)
                {
                    DeleteDir(dir);//遞歸調用該方法,刪除該目錄下文件夾及文件
                    dir.Delete();//刪除該目錄
                }
            }
        }
    }
}

Directory和DirectoryInfo方法使用總結:
//1.建立一些個目錄 :Directory.CreateDirectory(@"c:\test\1");
//2.獲取當前目錄下的全部的直接子目錄:
string[] dirs = Directory.GetDirectories(@"c:\"); 
string[] dirs = Directory.GetDirectories(@"c:\","*I*",SearchOption.TopDirectoryOnly); //通配符查找目錄下的子目錄,能夠搜索到隱藏文件。 
//3.判斷某個目錄下是否存在某個文件夾:bool Directory.Exists(path)
//4. 刪除目錄, recursive表示是否遞歸刪除,若是recursive爲false則只能刪除空目錄:
void Delete(string path, bool recursive)    
//5.
獲得一個目錄下的文件:
string[] Directory.GetFiles(string path)  
blog

string[] Directory.GetFiles(string path, string searchPattern, SearchOption searchOption);通配符查找目錄下的文件遞歸

//6. move()  //移動、剪切。只能在同一個磁盤中。目錄沒有Copy方法。能夠使用Move()方法實現重命名。string

相關文章
相關標籤/搜索