C#中Directory类目录操作(复制\重命名\创建\删除)

作者:袖梨 2022-06-25

Directory 类用于典型操作,如复制、移动、重命名、创建和删除目录。也可将 Directory 类用于获取和设置与目录的创建、访问及写入操作相关的 DateTime 信息。 由于所有的 Directory 方法都是静态的,所以如果只想执行一个操作,那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高。大多数 Directory 方法要求当前操作的目录的路径。

 代码如下 复制代码

//1.---------文件夹创建、移动、删除---------

//创建文件夹
Directory.CreateDirectory(Server.MapPath("a"));
Directory.CreateDirectory(Server.MapPath("b"));
Directory.CreateDirectory(Server.MapPath("c"));
//移动b到a
Directory.Move(Server.MapPath("b"), Server.MapPath("ab"));
//删除c
Directory.Delete(Server.MapPath("c"));

//2.---------文件创建、复制、移动、删除---------

//创建文件
//使用File.Create创建再复制/移动/删除时会提示:文件正由另一进程使用,因此该进程无法访问该文件
//改用 FileStream 获取 File.Create 返回的 System.IO.FileStream 再进行关闭就无此问题
FileStream fs;
fs = File.Create(Server.MapPath("a.txt"));
fs.Close();
fs = File.Create(Server.MapPath("b.txt"));
fs.Close();
fs = File.Create(Server.MapPath("c.txt"));
fs.Close();
//复制文件
File.Copy(Server.MapPath("a.txt"), Server.MapPath("aa.txt"));
//移动文件
File.Move(Server.MapPath("b.txt"), Server.MapPath("ab.txt"));
File.Move(Server.MapPath("c.txt"), Server.MapPath("ac.txt"));
//删除文件
File.Delete(Server.MapPath("a.txt"));

//3.---------遍历文件夹中的文件和子文件夹并显示其属性---------

if(Directory.Exists(Server.MapPath("a")))
{
    //所有子文件夹
    foreach(string item in Directory.GetDirectories(Server.MapPath("a")))
    {
        Response.Write("文件夹:" + item + "
");
        DirectoryInfo directoryinfo = new DirectoryInfo(item);
        Response.Write("名称:" + directoryinfo.Name + "
");
        Response.Write("路径:" + directoryinfo.FullName + "
");
        Response.Write("创建时间:" + directoryinfo.CreationTime + "
");
        Response.Write("上次访问时间:" + directoryinfo.LastAccessTime + "
");
        Response.Write("上次修改时间:" + directoryinfo.LastWriteTime + "
");
        Response.Write("父文件夹:" + directoryinfo.Parent + "
");
        Response.Write("所在根目录:" + directoryinfo.Root + "
");
        Response.Write("
");
    }

    //所有子文件
    foreach (string item in Directory.GetFiles(Server.MapPath("a")))
    {
        Response.Write("文件:" + item + "
");
        FileInfo fileinfo = new FileInfo(item);
        Response.Write("名称:" + fileinfo.Name + "
");
        Response.Write("扩展名:" + fileinfo.Extension +"
");
        Response.Write("路径:" + fileinfo.FullName +"
");
        Response.Write("大小:" + fileinfo.Length +"
");
        Response.Write("创建时间:" + fileinfo.CreationTime +"
");
        Response.Write("上次访问时间:" + fileinfo.LastAccessTime +"
");
        Response.Write("上次修改时间:" + fileinfo.LastWriteTime +"
");
        Response.Write("所在文件夹:" + fileinfo.DirectoryName +"
");
        Response.Write("文件属性:" + fileinfo.Attributes +"
");
        Response.Write("
");
    }
}

//4.---------文件读写---------

if (File.Exists(Server.MapPath("aa.txt")))
{
    StreamWriter streamwrite = new StreamWriter(Server.MapPath("aa.txt"));
    streamwrite.WriteLine("木子屋");
    streamwrite.WriteLine("http://www.111com.net/");
    streamwrite.Write("2008-04-13");
    streamwrite.Close();

    StreamReader streamreader = new StreamReader(Server.MapPath("aa.txt"));
    Response.Write(streamreader.ReadLine());
    Response.Write(streamreader.ReadToEnd());
    streamreader.Close();
}

最后分享一个目录操作类

 代码如下 复制代码

///


    /// 目录操作类
    ///

    public class DirectoryHelper
    {
        public DirectoryHelper()
        { }

        ///


        /// 得到所有磁盘驱动器
        ///

        ///
        public string[] AllDrivers()
        {
            return Directory.GetLogicalDrives();
        }

        ///


        /// 应用程序的当前工作目录,bin文件夹
        ///

        ///
        public string CurrentDirectory()
        {
            return Directory.GetCurrentDirectory();
        }

        ///


        /// 获取path目录下的文件,不包括文件夹
        ///

        ///
        ///
        public string[] AllFiles(string path)
        {
            return Directory.GetFiles(path);
        }

        ///


        /// 创建一个目录如果directory存在,那么就不创建了目录了
        ///

        ///
        public void CreateDirectory(string directory)
        {
            //DirectoryInfo info = new DirectoryInfo(directory);        
            //info.Create();  

            DirectoryInfo info = Directory.CreateDirectory(directory);
        }

        ///


        /// 删除目录
        ///

        ///
        public void DeleteDirectory(string path)
        {
            //Directory.Delete(path, false/*删除子目录*/);   //子目录非空则报错。

            Directory.Delete(path, true/*保留子目录*/);  //忽略子目录内容,有没有内容都删除
        }

        ///


        /// 目录下的所有文件,隐藏文件也可见,偷窥吗?
        ///

        ///
        ///
        public string[] AllContent(string path)
        {
            return Directory.GetFileSystemEntries(path);//如果path不存在则报错
        }

        ///


        /// 复制文件目录,复制完成原目录删除
        ///

        ///
        ///
        public void CopyDirectory(string sourcePath/*复制前必须存在,复制完成后挂掉了*/,string targetPath/*复制前不能存在*/)
        {
            Directory.Move(sourcePath,targetPath);
        }

        ///


        /// 编码,说实话我没用过,不知道干吗用.
        ///

        ///
        public string Codeing()
        {
            Encoding code = Encoding.Default;
            //byte[] bytes = code.GetBytes("中华人民共和国");    
            byte[] bytes = code.GetBytes("i'm a smart boy");     
            return Encoding.GetEncoding("UTF-8").GetString(bytes);       //doc环境不支持中文吗?中文不能正常转回去,英文就可以。
        }
    }

相关文章

精彩推荐