zoukankan      html  css  js  c++  java
  • 09-删除目录及文件操作

    文件操作基础知识:

    Directory //操作目录(文件夹),静态类。
    DirectoryInfo //文件夹的一个“类”,实例类。用来描述一个文件夹对象(获取指定目录下的所有目录时返回一个DirectoryInfo数组。返回文件夹数组)
    FileInfo //文件类,实例类。用来描述一个文件对象。获取指定目录下的所有文件时,返回一个FileInfo数组。

    例:删除F:a下所有文件夹及文件夹里文件:

    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 1、最直接做法
                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。

    思路:使用递归方法,先删除每个目录下的文件,然后再删除文件夹,代码如下:

    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下所有文件夹及文件夹里文件===========
                //2、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: est1");
    //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)  

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

    //6. move()  //移动、剪切。只能在同一个磁盘中。目录没有Copy方法。可以使用Move()方法实现重命名。

  • 相关阅读:
    网络流相关题目
    【洛谷P3119】[USACO15JAN]草鉴定Grass Cownoisseur
    【洛谷八连测R6】yanQval-透明的星尘
    【洛谷八连测R6】yanQval-分离丧失的既视感
    【洛谷八连测R6】yanQval-不可逆的重启动
    【洛谷P2700】逐个击破
    【洛谷八连测R5】whzzt-Confidence
    【洛谷八连测R5】whzzt-Warmth
    【洛谷八连测R5】whzzt-Conscience
    【NOIP模拟赛】
  • 原文地址:https://www.cnblogs.com/zy-style/p/4315262.html
Copyright © 2011-2022 走看看