zoukankan      html  css  js  c++  java
  • C#中的文件操作 (一)

    C#追加文件 
    StreamWriter sw 
    = File.AppendText(Server.MapPath(".")+"\\myText.txt"); 
    sw.WriteLine(
    "追逐理想"); 
    sw.WriteLine(
    "kzlll"); 
    sw.WriteLine(
    ".NET笔记"); 
    sw.Flush(); 
    sw.Close(); 

    C#拷贝文件 
    string OrignFile,NewFile; 
    OrignFile 
    = Server.MapPath(".")+"\\myText.txt"
    NewFile 
    = Server.MapPath(".")+"\\myTextCopy.txt"
    File.Copy(OrignFile,NewFile,
    true); 

    C#删除文件 
    string delFile = Server.MapPath(".")+"\\myTextCopy.txt"
    File.Delete(delFile); 

    C#移动文件 
    string OrignFile,NewFile; 
    OrignFile 
    = Server.MapPath(".")+"\\myText.txt"
    NewFile 
    = Server.MapPath(".")+"\\myTextCopy.txt"
    File.Move(OrignFile,NewFile); 

    C#创建目录 
    // 创建目录c:\sixAge 
    DirectoryInfo d=Directory.CreateDirectory("c:\\sixAge"); 
    // d1指向c:\sixAge\sixAge1 
    DirectoryInfo d1=d.CreateSubdirectory("sixAge1"); 
    // d2指向c:\sixAge\sixAge1\sixAge1_1 
    DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1"); 
    // 将当前目录设为c:\sixAge 
    Directory.SetCurrentDirectory("c:\\sixAge"); 
    // 创建目录c:\sixAge\sixAge2 
    Directory.CreateDirectory("sixAge2"); 
    // 创建目录c:\sixAge\sixAge2\sixAge2_1 
    Directory.CreateDirectory("sixAge2\\sixAge2_1"); 

    递归删除文件夹及文件 
    <%@ Page Language=C#%> 
    <%@ Import namespace="System.IO"%> 
    <Script runat=server> 
    public void DeleteFolder(string dir) 

        
    if (Directory.Exists(dir)) //如果存在这个文件夹删除之 
        
            
    foreach(string d in Directory.GetFileSystemEntries(dir)) 
            

                
    if(File.Exists(d)) 
                    File.Delete(d); 
    //直接删除其中的文件 
                else 
                    DeleteFolder(d); 
    //递归删除子文件夹 
            }
     
            Directory.Delete(dir); 
    //删除已空文件夹 
            Response.Write(dir+" 文件夹删除成功"); 
        }
     
        
    else 
            Response.Write(dir
    +" 该文件夹不存在"); //如果文件夹不存在则提示 
    }
     

    protected void Page_Load (Object sender ,EventArgs e) 

        
    string Dir="D:\\gbook\\11"
        DeleteFolder(Dir); 
    //调用函数删除文件夹 
    }
     


     

    // ======================================================
      
    // 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面
      
    // 如果目标文件夹为只读属性就会报错。
      
    // April 18April2005 In STU
      
    // ======================================================
      public static void CopyDir(string srcPath,string aimPath)
      
    {
       
    try
       
    {
        
    // 检查目标目录是否以目录分割字符结束如果不是则添加之
        if(aimPath[aimPath.Length-1!= Path.DirectorySeparatorChar) 
         aimPath 
    += Path.DirectorySeparatorChar;
        
    // 判断目标目录是否存在如果不存在则新建之
        if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);
        
    // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
        
    // 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法
        
    // string[] fileList = Directory.GetFiles(srcPath);
        string[] fileList = Directory.GetFileSystemEntries(srcPath);
        
    // 遍历所有的文件和目录
        foreach(string file in fileList)
        
    {
         
    // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件
         if(Directory.Exists(file))
          CopyDir(file,aimPath
    +Path.GetFileName(file));
          
    // 否则直接Copy文件
         else
          File.Copy(file,aimPath
    +Path.GetFileName(file),true);
        }

       }

       
    catch (Exception e)
       
    {
        MessageBox.Show (e.ToString());
       }

      }
     

      
    // ======================================================
      
    // 实现一个静态方法将指定文件夹下面的所有内容Detele
      
    // 测试的时候要小心操作,删除之后无法恢复。
      
    // April 18April2005 In STU
      
    // ======================================================
      public static void DeleteDir(string aimPath)
      
    {
       
    try
       
    {
        
    // 检查目标目录是否以目录分割字符结束如果不是则添加之
        if(aimPath[aimPath.Length-1!= Path.DirectorySeparatorChar) 
         aimPath 
    += Path.DirectorySeparatorChar;
        
    // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
        
    // 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
        
    // string[] fileList = Directory.GetFiles(aimPath);
        string[] fileList = Directory.GetFileSystemEntries(aimPath);
        
    // 遍历所有的文件和目录
        foreach(string file in fileList)
        
    {
         
    // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件
         if(Directory.Exists(file))
         
    {
          DeleteDir(aimPath
    +Path.GetFileName(file));
         }

          
    // 否则直接Delete文件
         else
         
    {
          File.Delete (aimPath
    +Path.GetFileName(file));
         }

        }

        
    //删除文件夹
        System.IO .Directory .Delete (aimPath,true);
       }

       
    catch (Exception e)
       
    {
        MessageBox.Show (e.ToString());
       }

      }


    需要引用命名空间:
    using System.IO;

    /// <summary>
      
    /// 拷贝文件夹(包括子文件夹)到指定文件夹下,源文件夹和目标文件夹均需绝对路径. 格式: CopyFolder(源文件夹,目标文件夹);
      
    /// </summary>
      
    /// <param name="strFromPath"></param>
      
    /// <param name="strToPath"></param>


      
    //--------------------------------------------------
      
    //作者:明天去要饭  QQ:305725744
     
    //---------------------------------------------------

      
    public static void CopyFolder(string strFromPath,string strToPath)
      
    {
       
    //如果源文件夹不存在,则创建
       if (!Directory.Exists(strFromPath))
       
    {    
        Directory.CreateDirectory(strFromPath);
       }
       

       
    //取得要拷贝的文件夹名
       string strFolderName = strFromPath.Substring(strFromPath.LastIndexOf("\\"+ 1,strFromPath.Length - strFromPath.LastIndexOf("\\"- 1);   

       
    //如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹
       if (!Directory.Exists(strToPath + "\\" + strFolderName))
       
    {    
        Directory.CreateDirectory(strToPath 
    + "\\" + strFolderName);
       }

       
    //创建数组保存源文件夹下的文件名
       string[] strFiles = Directory.GetFiles(strFromPath);

       
    //循环拷贝文件
       for(int i = 0;i < strFiles.Length;i++)
       
    {
        
    //取得拷贝的文件名,只取文件名,地址截掉。
        string strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf("\\"+ 1,strFiles[i].Length - strFiles[i].LastIndexOf("\\"- 1);
        
    //开始拷贝文件,true表示覆盖同名文件
        File.Copy(strFiles[i],strToPath + "\\" + strFolderName + "\\" + strFileName,true);
       }

      
       
    //创建DirectoryInfo实例
       DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);
       
    //取得源文件夹下的所有子文件夹名称
       DirectoryInfo[] ZiPath = dirInfo.GetDirectories();
       
    for (int j = 0;j < ZiPath.Length;j++)
       
    {
        
    //获取所有子文件夹名
        string strZiPath = strFromPath + "\\" + ZiPath[j].ToString();   
        
    //把得到的子文件夹当成新的源文件夹,从头开始新一轮的拷贝
        CopyFolder(strZiPath,strToPath + "\\" + strFolderName);
       }

      }


  • 相关阅读:
    CentOS查看CPU信息、位数、多核信息
    Linux常用命令大全
    chmod命令详细用法
    tar命令的详细解释
    yum和rpm命令详解
    LeetCode 241. Different Ways to Add Parentheses
    LeetCode 139. Word Break
    LeetCode 201. Bitwise AND of Numbers Range
    LeetCode 486. Predict the Winner
    LeetCode 17. Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/ghd258/p/272293.html
Copyright © 2011-2022 走看看