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

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("a\b"));
//删除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("a\a.txt"));
//移动文件
File.Move(Server.MapPath("b.txt"), Server.MapPath("a\b.txt"));
File.Move(Server.MapPath("c.txt"), Server.MapPath("a\c.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("<b>文件夹:" + item + "</b><br/>");
        DirectoryInfo directoryinfo = new DirectoryInfo(item);
        Response.Write("名称:" + directoryinfo.Name + "<br/>");
        Response.Write("路径:" + directoryinfo.FullName + "<br/>");
        Response.Write("创建时间:" + directoryinfo.CreationTime + "<br/>");
        Response.Write("上次访问时间:" + directoryinfo.LastAccessTime + "<br/>");
        Response.Write("上次修改时间:" + directoryinfo.LastWriteTime + "<br/>");
        Response.Write("父文件夹:" + directoryinfo.Parent + "<br/>");
        Response.Write("所在根目录:" + directoryinfo.Root + "<br/>");
        Response.Write("<br/>");
    }

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

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

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

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

最后分享一个目录操作类

 代码如下 复制代码

/// <summary>
    /// 目录操作类
    /// </summary>
    public class DirectoryHelper
    {
        public DirectoryHelper()
        { }

        /// <summary>
        /// 得到所有磁盘驱动器
        /// </summary>
        /// <returns></returns>
        public string[] AllDrivers()
        {
            return Directory.GetLogicalDrives();
        }

        /// <summary>
        /// 应用程序的当前工作目录,bin文件夹
        /// </summary>
        /// <returns></returns>
        public string CurrentDirectory()
        {
            return Directory.GetCurrentDirectory();
        }

        /// <summary>
        /// 获取path目录下的文件,不包括文件夹
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public string[] AllFiles(string path)
        {
            return Directory.GetFiles(path);
        }

        /// <summary>
        /// 创建一个目录如果directory存在,那么就不创建了目录了
        /// </summary>
        /// <param name="directory"></param>
        public void CreateDirectory(string directory)
        {
            //DirectoryInfo info = new DirectoryInfo(directory);        
            //info.Create();  

            DirectoryInfo info = Directory.CreateDirectory(directory);
        }

        /// <summary>
        /// 删除目录
        /// </summary>
        /// <param name="path"></param>
        public void DeleteDirectory(string path)
        {
            //Directory.Delete(path, false/*删除子目录*/);   //子目录非空则报错。

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

        /// <summary>
        /// 目录下的所有文件,隐藏文件也可见,偷窥吗?
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public string[] AllContent(string path)
        {
            return Directory.GetFileSystemEntries(path);//如果path不存在则报错
        }

        /// <summary>
        /// 复制文件目录,复制完成原目录删除
        /// </summary>
        /// <param name="path1"></param>
        /// <param name="path2"></param>
        public void CopyDirectory(string sourcePath/*复制前必须存在,复制完成后挂掉了*/,string targetPath/*复制前不能存在*/)
        {
            Directory.Move(sourcePath,targetPath);
        }

        /// <summary>
        /// 编码,说实话我没用过,不知道干吗用.
        /// </summary>
        /// <returns></returns>
        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环境不支持中文吗?中文不能正常转回去,英文就可以。
        }
    }

时间: 2024-11-08 22:45:38

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

Perl 文本文件的读写操作、文件的重命名和删除、多个文本文件的合并实现代码_perl

读文件: 复制代码 代码如下: #!perlopen filetxt,"/path/a.txt";   #  filetxt为文件句柄,用于和文件a.txt建立链接.文件句柄可任意取名,但不要和Perl自带的几个文件句柄重名.print <filetxt>;                 #  此处print函数用于显示文件a.txt的内容.<>为取行操作符,<文件句柄>用于读取所链接文件的内容.close filetxt;            

jQuery对象中的类数组操作

我们都知道jQUery对象中有一个类数组的元素包装集,该集合类似js中的数组一样拥有length属性,因此我们称此为类数组,下面我们就来总结下这个jQuery对象中的类数组时如何进行操作的,看看我们的jQuery为我们都提供了哪些可用的方法: size():很明显,它应该是返回包装集中的元素个数,如$('a').size()表示链接元素的个数: get(index):当没指定index时就默认取包装集中所有元素,并以js中的数组形式返回,如果指定了index,则返回下标为index对应的元素,如

小议jQuery对象中的类数组操作

我们都知道jQUery对象中有一个类数组的元素包装集,该集合类似js中的数组一样拥有 length属性,因此我们称此为类数组,下面我们就来总结下这个jQuery对象中的类数组时如 何进行操作的,看看我们的jQuery为我们都提供了哪些可用的方法: size():很明显 ,它应该是返回包装集中的元素个数,如$('a').size()表示链接元素的个数: get(index):当没指定index时就默认取包装集中所有元素,并以js中的数组形式返 回,如果指定了index,则返回下标为index对应的

怎样从Win7系统中给多个文件一键重命名

  这个技巧比较简单,相信很多朋友都会,在此,献丑一下,谨希望能给使用Windows 7 的新手朋友们一点点小帮助,高手勿笑. 举个例子,大家从相机里导出的照片都是以"数字"为文件名,很多朋友会想重新批量重新命名一下,例如"香港迪斯尼001.香港迪斯尼002"等等. 在Windows7下,批量重命名其实也只需要一键: 将多个文件选中,按"Ctrl+A"或按住"Ctrl"然后用鼠标点击想修改的文件,选中后按"F2&qu

Java创建、重命名、删除文件和文件夹(转)

Java的文件操作太基础,缺乏很多实用工具,比如对目录的操作,支持就非常的差了.如果你经常用Java操作文件或文件夹,你会觉得反复编写这些代码是令人沮丧的问题,而且要大量用到递归. 下面是的一个解决方案,借助Apache Commons IO工具包(commons-io-1.1.jar)来简单实现文件(夹)的复制.移动.删除.获取大小等操作.   import org.apache.commons.io.FileUtils; import org.apache.commons.io.filefi

.Net中队列类的操作与系统队列类queue的使用

class MyQueue { //存放元素的数组 private object[] _array; //增长因子 private int _growFactor; //队头下标 private int _head; //队尾下标 private int _tail; private int _size; private const int _MinGrow = 4; //初始容量 private const int _ShrikThreadhold = 0x20; public MyQueue

PHP中的类-操作XML(3)

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  /* Here are the XML functions needed by expat */    /* when expat hits an opening tag, it fires up this function */    function startElement($parser, $name, $att

PHP中的类-操作XML(2)

  name of the tag -- in the first case above, this is the tag STORY, and below that BYLINE.  You want BYLINE_AUTHOR.  You want the first BA.  The first one is index [0] in the second part of the two-dimensional array. Even if there is only *one* byli

PHP中的类-操作XML(1)

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  http://www.hansanderson.com/ me <?php /*    (c) 2000 Hans Anderson Corporation.  All Rights Reserved.    You are free to use and modify this class under the s