C#中常用的文件操作方法

C#追加文件
  1. StreamWriter sw = File.AppendText(Server.MapPath(".")+"//myText.txt");   
  2. sw.WriteLine("追逐理想");   
  3. sw.WriteLine("kzlll");   
  4. sw.WriteLine(".NET笔记");   
  5. sw.Flush();   
  6. sw.Close();  

C#拷贝文件

  1. string OrignFile,NewFile;   
  2. OrignFile = Server.MapPath(".")+"//myText.txt";   
  3. NewFile = Server.MapPath(".")+"//myTextCopy.txt";   
  4. File.Copy(OrignFile,NewFile,true);  

C#删除文件

  1. string delFile = Server.MapPath(".")+"//myTextCopy.txt";   
  2. File.Delete(delFile);  

C#移动文件

  1. string OrignFile,NewFile;   
  2. OrignFile = Server.MapPath(".")+"//myText.txt";   
  3. NewFile = Server.MapPath(".")+"//myTextCopy.txt";   
  4. File.Move(OrignFile,NewFile);  

C#创建目录

  1. // 创建目录c:/sixAge   
  2. DirectoryInfo d=Directory.CreateDirectory("c://sixAge");   
  3. // d1指向c:/sixAge/sixAge1   
  4. DirectoryInfo d1=d.CreateSubdirectory("sixAge1");   
  5. // d2指向c:/sixAge/sixAge1/sixAge1_1   
  6. DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1");   
  7. // 将当前目录设为c:/sixAge   
  8. Directory.SetCurrentDirectory("c://sixAge");   
  9. // 创建目录c:/sixAge/sixAge2   
  10. Directory.CreateDirectory("sixAge2");   
  11. // 创建目录c:/sixAge/sixAge2/sixAge2_1   
  12. Directory.CreateDirectory("sixAge2//sixAge2_1");  

递归删除文件夹及文件

  1. <%@ Page Language=C#%>   
  2. <%@ Import namespace="System.IO"%>   
  3. <Script runat=server>   
  4. public void DeleteFolder(string dir)   
  5. {   
  6.     if (Directory.Exists(dir)) //如果存在这个文件夹删除之   
  7.     {   
  8.         foreach(string d in Directory.GetFileSystemEntries(dir))   
  9.         {   
  10.             if(File.Exists(d))   
  11.                 File.Delete(d); //直接删除其中的文件   
  12.             else   
  13.                 DeleteFolder(d); //递归删除子文件夹   
  14.         }   
  15.         Directory.Delete(dir); //删除已空文件夹   
  16.         Response.Write(dir+" 文件夹删除成功");   
  17.     }   
  18.     else   
  19.         Response.Write(dir+" 该文件夹不存在"); //如果文件夹不存在则提示   
  20. }  
  21.   
  22. protected void Page_Load (Object sender ,EventArgs e)   
  23. {   
  24.     string Dir="D://gbook//11";   
  25.     DeleteFolder(Dir); //调用函数删除文件夹   
  26. }  

  1. // ======================================================  
  2. // 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面  
  3. // 如果目标文件夹为只读属性就会报错。  
  4. // April 18April2005 In STU  
  5. // ======================================================  
  6. public static void CopyDir(string srcPath,string aimPath)  
  7. {  
  8.    try  
  9.    {  
  10.     // 检查目标目录是否以目录分割字符结束如果不是则添加之  
  11.     if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)   
  12.      aimPath += Path.DirectorySeparatorChar;  
  13.     // 判断目标目录是否存在如果不存在则新建之  
  14.     if(!Directory.Exists(aimPath)) Directory.CreateDirectory(aimPath);  
  15.     // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组  
  16.     // 如果你指向copy目标文件下面的文件而不包含目录请使用下面的方法  
  17.     // string[] fileList = Directory.GetFiles(srcPath);  
  18.     string[] fileList = Directory.GetFileSystemEntries(srcPath);  
  19.     // 遍历所有的文件和目录  
  20.     foreach(string file in fileList)  
  21.     {  
  22.      // 先当作目录处理如果存在这个目录就递归Copy该目录下面的文件  
  23.      if(Directory.Exists(file))  
  24.       CopyDir(file,aimPath+Path.GetFileName(file));  
  25.       // 否则直接Copy文件  
  26.      else  
  27.       File.Copy(file,aimPath+Path.GetFileName(file),true);  
  28.     }  
  29.    }  
  30.    catch (Exception e)  
  31.    {  
  32.     MessageBox.Show (e.ToString());  
  33.    }  
  34. }  
  35.   
  36. // ======================================================  
  37. // 实现一个静态方法将指定文件夹下面的所有内容Detele  
  38. // 测试的时候要小心操作,删除之后无法恢复。  
  39. // April 18April2005 In STU  
  40. // ======================================================  
  41. public static void DeleteDir(string aimPath)  
  42. {  
  43.    try  
  44.    {  
  45.     // 检查目标目录是否以目录分割字符结束如果不是则添加之  
  46.     if(aimPath[aimPath.Length-1] != Path.DirectorySeparatorChar)   
  47.      aimPath += Path.DirectorySeparatorChar;  
  48.     // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组  
  49.     // 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法  
  50.     // string[] fileList = Directory.GetFiles(aimPath);  
  51.     string[] fileList = Directory.GetFileSystemEntries(aimPath);  
  52.     // 遍历所有的文件和目录  
  53.     foreach(string file in fileList)  
  54.     {  
  55.      // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件  
  56.      if(Directory.Exists(file))  
  57.      {  
  58.       DeleteDir(aimPath+Path.GetFileName(file));  
  59.      }  
  60.       // 否则直接Delete文件  
  61.      else  
  62.      {  
  63.       File.Delete (aimPath+Path.GetFileName(file));  
  64.      }  
  65.     }  
  66.     //删除文件夹  
  67.     System.IO .Directory .Delete (aimPath,true);  
  68.    }  
  69.    catch (Exception e)  
  70.    {  
  71.     MessageBox.Show (e.ToString());  
  72.    }  
  73. }  

需要引用命名空间:

  1. using System.IO;  
  2.   
  3. /**//// <summary>  
  4. /// 拷贝文件夹(包括子文件夹)到指定文件夹下,源文件夹和目标文件夹均需绝对路径. 格式: CopyFolder(源文件夹,目标文件夹);  
  5. /// </summary>  
  6. /// <param name="strFromPath"></param>  
  7. /// <param name="strToPath"></param>  
  8.   
  9. //--------------------------------------------------  
  10. //作者:明天去要饭 QQ:305725744  
  11. //---------------------------------------------------  
  12.   
  13. public static void CopyFolder(string strFromPath,string strToPath)  
  14. {  
  15.    //如果源文件夹不存在,则创建  
  16.    if (!Directory.Exists(strFromPath))  
  17.    {      
  18.     Directory.CreateDirectory(strFromPath);  
  19.    }    
  20.   
  21.    //取得要拷贝的文件夹名  
  22.    string strFolderName = strFromPath.Substring(strFromPath.LastIndexOf("//") + 1,strFromPath.Length - strFromPath.LastIndexOf("//") - 1);    
  23.   
  24.    //如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹  
  25.    if (!Directory.Exists(strToPath + "//" + strFolderName))  
  26.    {      
  27.     Directory.CreateDirectory(strToPath + "//" + strFolderName);  
  28.    }  
  29.    //创建数组保存源文件夹下的文件名  
  30.    string[] strFiles = Directory.GetFiles(strFromPath);  
  31.   
  32.    //循环拷贝文件  
  33.    for(int i = 0;i < strFiles.Length;i++)  
  34.    {  
  35.     //取得拷贝的文件名,只取文件名,地址截掉。  
  36.     string strFileName = strFiles[i].Substring(strFiles[i].LastIndexOf("//") + 1,strFiles[i].Length - strFiles[i].LastIndexOf("//") - 1);  
  37.     //开始拷贝文件,true表示覆盖同名文件  
  38.     File.Copy(strFiles[i],strToPath + "//" + strFolderName + "//" + strFileName,true);  
  39.    }  
  40.   
  41.    //创建DirectoryInfo实例  
  42.    DirectoryInfo dirInfo = new DirectoryInfo(strFromPath);  
  43.    //取得源文件夹下的所有子文件夹名称  
  44.    DirectoryInfo[] ZiPath = dirInfo.GetDirectories();  
  45.    for (int j = 0;j < ZiPath.Length;j++)  
  46.    {  
  47.     //获取所有子文件夹名  
  48.     string strZiPath = strFromPath + "//" + ZiPath[j].ToString();     
  49.     //把得到的子文件夹当成新的源文件夹,从头开始新一轮的拷贝  
  50.     CopyFolder(strZiPath,strToPath + "//" + strFolderName);  
  51.    }  
  52. }  

一.读取文本文件

  1. 1/**//// <summary>  
  2. 2/// 读取文本文件  
  3. 3/// </summary>  
  4. 4private void ReadFromTxtFile()  
  5. 5{  
  6. 6    if(filePath.PostedFile.FileName != "")  
  7. 7    {  
  8. 8        txtFilePath =filePath.PostedFile.FileName;  
  9. 9        fileExtName = txtFilePath.Substring(txtFilePath.LastIndexOf(".")+1,3);  
  10. 10  
  11. 11        if(fileExtName !="txt" && fileExtName != "TXT")  
  12. 12        {  
  13. 13            Response.Write("请选择文本文件");  
  14. 14        }  
  15. 15        else  
  16. 16        {  
  17. 17            StreamReader fileStream = new StreamReader(txtFilePath,Encoding.Default);  
  18. 18            txtContent.Text = fileStream.ReadToEnd();  
  19. 19            fileStream.Close();  
  20. 20        }  
  21. 21    }  
  22. 22 }  

二.获取文件列表

  1. 1/**//// <summary>  
  2. 2/// 获取文件列表  
  3. 3/// </summary>  
  4. 4private void GetFileList()  
  5. 5{  
  6. 6    string strCurDir,FileName,FileExt;  
  7. 7      
  8. 8    /**////文件大小  
  9. 9    long FileSize;  
  10. 10      
  11. 11    /**////最后修改时间;  
  12. 12    DateTime FileModify;  
  13. 13  
  14. 14    /**////初始化  
  15. 15    if(!IsPostBack)  
  16. 16    {  
  17. 17        /**////初始化时,默认为当前页面所在的目录  
  18. 18        strCurDir = Server.MapPath(".");  
  19. 19        lblCurDir.Text = strCurDir;  
  20. 20        txtCurDir.Text = strCurDir;  
  21. 21    }  
  22. 22    else  
  23. 23    {  
  24. 24        strCurDir = txtCurDir.Text;  
  25. 25        txtCurDir.Text = strCurDir;  
  26. 26        lblCurDir.Text = strCurDir;  
  27. 27    }  
  28. 28    FileInfo fi;  
  29. 29    DirectoryInfo dir;  
  30. 30    TableCell td;  
  31. 31    TableRow tr;  
  32. 32    tr = new TableRow();  
  33. 33      
  34. 34    /**////动态添加单元格内容  
  35. 35    td = new TableCell();  
  36. 36    td.Controls.Add(new LiteralControl("文件名"));  
  37. 37    tr.Cells.Add(td);  
  38. 38    td = new TableCell();  
  39. 39    td.Controls.Add(new LiteralControl("文件类型"));  
  40. 40    tr.Cells.Add(td);  
  41. 41    td = new TableCell();  
  42. 42    td.Controls.Add(new LiteralControl("文件大小"));  
  43. 43    tr.Cells.Add(td);  
  44. 44    td = new TableCell();  
  45. 45    td.Controls.Add(new LiteralControl("最后修改时间"));  
  46. 46    tr.Cells.Add(td);  
  47. 47  
  48. 48    tableDirInfo.Rows.Add(tr);  
  49. 49      
  50. 50    /**////针对当前目录建立目录引用对象  
  51. 51    DirectoryInfo dirInfo = new DirectoryInfo(txtCurDir.Text);  
  52. 52      
  53. 53    /**////循环判断当前目录下的文件和目录  
  54. 54    foreach(FileSystemInfo fsi in dirInfo.GetFileSystemInfos())  
  55. 55    {  
  56. 56        FileName = "";  
  57. 57        FileExt = "";  
  58. 58        FileSize = 0;  
  59. 59          
  60. 60        /**////如果是文件  
  61. 61        if(fsi is FileInfo)  
  62. 62        {  
  63. 63            fi = (FileInfo)fsi;  
  64. 64              
  65. 65            /**////取得文件名  
  66. 66            FileName = fi.Name;  
  67. 67              
  68. 68            /**////取得文件的扩展名  
  69. 69            FileExt = fi.Extension;  
  70. 70              
  71. 71            /**////取得文件的大小  
  72. 72            FileSize = fi.Length;  
  73. 73              
  74. 74            /**////取得文件的最后修改时间  
  75. 75            FileModify = fi.LastWriteTime;  
  76. 76        }  
  77. 77  
  78. 78        /**////否则是目录  
  79. 79        else  
  80. 80        {  
  81. 81            dir = (DirectoryInfo)fsi;  
  82. 82              
  83. 83            /**////取得目录名  
  84. 84            FileName = dir.Name;  
  85. 85              
  86. 86            /**////取得目录的最后修改时间  
  87. 87            FileModify = dir.LastWriteTime;  
  88. 88              
  89. 89            /**////设置文件的扩展名为"文件夹"  
  90. 90            FileExt = "文件夹";  
  91. 91        }  
  92. 92          
  93. 93        /**////动态添加表格内容  
  94. 94        tr = new TableRow();  
  95. 95        td = new TableCell();  
  96. 96        td.Controls.Add(new LiteralControl(FileName));  
  97. 97        tr.Cells.Add(td);  
  98. 98        td = new TableCell();  
  99. 99        td.Controls.Add(new LiteralControl(FileExt));  
  100. 100        tr.Cells.Add(td);  
  101. 101        td = new TableCell();  
  102. 102        td.Controls.Add(new LiteralControl(FileSize.ToString()+"字节"));  
  103. 103        tr.Cells.Add(td);  
  104. 104        td = new TableCell();  
  105. 105        td.Controls.Add(new LiteralControl(FileModify.ToString("yyyy-mm-dd hh:mm:ss")));  
  106. 106        tr.Cells.Add(td);  
  107. 107        tableDirInfo.Rows.Add(tr);  
  108. 108    }  
  109. 109}  

三.读取日志文件

  1. 1/**//// <summary>  
  2. 2/// 读取日志文件  
  3. 3/// </summary>  
  4. 4private void ReadLogFile()  
  5. 5{  
  6. 6    /**////从指定的目录以打开或者创建的形式读取日志文件  
  7. 7    FileStream fs = new FileStream(Server.MapPath("upedFile")+"//logfile.txt", FileMode.OpenOrCreate, FileAccess.Read);  
  8. 8  
  9. 9    /**////定义输出字符串  
  10. 10    StringBuilder output = new StringBuilder();  
  11. 11      
  12. 12    /**////初始化该字符串的长度为0  
  13. 13    output.Length = 0;  
  14. 14      
  15. 15    /**////为上面创建的文件流创建读取数据流  
  16. 16    StreamReader read = new StreamReader(fs);  
  17. 17      
  18. 18    /**////设置当前流的起始位置为文件流的起始点  
  19. 19    read.BaseStream.Seek(0, SeekOrigin.Begin);  
  20. 20      
  21. 21    /**////读取文件  
  22. 22    while (read.Peek() > -1)   
  23. 23    {  
  24. 24        /**////取文件的一行内容并换行  
  25. 25        output.Append(read.ReadLine() + "/n");  
  26. 26    }  
  27. 27      
  28. 28    /**////关闭释放读数据流  
  29. 29    read.Close();  
  30. 30      
  31. 31    /**////返回读到的日志文件内容  
  32. 32    return output.ToString();  
  33. 33}  

四.写入日志文件

  1. 1/**//// <summary>  
  2. 2/// 写入日志文件  
  3. 3/// </summary>  
  4. 4/// <param name="input"></param>  
  5. 5private void WriteLogFile(string input)  
  6. 6{      
  7. 7    /**////指定日志文件的目录  
  8. 8    string fname = Server.MapPath("upedFile") + "//logfile.txt";  
  9. 9    /**////定义文件信息对象  
  10. 10    FileInfo finfo = new FileInfo(fname);  
  11. 11  
  12. 12    /**////判断文件是否存在以及是否大于2K  
  13. 13    if ( finfo.Exists && finfo.Length > 2048 )  
  14. 14    {  
  15. 15        /**////删除该文件  
  16. 16        finfo.Delete();  
  17. 17    }  
  18. 18    /**////创建只写文件流  
  19. 19    using(FileStream fs = finfo.OpenWrite())  
  20. 20    {  
  21. 21        /**////根据上面创建的文件流创建写数据流  
  22. 22        StreamWriter w = new StreamWriter(fs);  
  23. 23          
  24. 24        /**////设置写数据流的起始位置为文件流的末尾  
  25. 25        w.BaseStream.Seek(0, SeekOrigin.End);  
  26. 26          
  27. 27        /**////写入“Log Entry : ”  
  28. 28        w.Write("/nLog Entry : ");  
  29. 29          
  30. 30        /**////写入当前系统时间并换行  
  31. 31        w.Write("{0} {1} /r/n", DateTime.Now.ToLongTimeString(),  
  32. 32            DateTime.Now.ToLongDateString());  
  33. 33          
  34. 34        /**////写入日志内容并换行  
  35. 35        w.Write(input + "/n");  
  36. 36          
  37. 37        /**////写入------------------------------------“并换行  
  38. 38        w.Write("------------------------------------/n");  
  39. 39          
  40. 40        /**////清空缓冲区内容,并把缓冲区内容写入基础流  
  41. 41        w.Flush();  
  42. 42          
  43. 43        /**////关闭写数据流  
  44. 44        w.Close();  
  45. 45    }  
  46. 46}  

五.创建HTML文件

  1. 1/**//// <summary>  
  2. 2/// 创建HTML文件  
  3. 3/// </summary>  
  4. 4private void CreateHtmlFile()  
  5. 5{      
  6. 6    /**////定义和html标记数目一致的数组  
  7. 7    string[] newContent = new string[5];  
  8. 8    StringBuilder strhtml = new StringBuilder();  
  9. 9    try   
  10. 10    {  
  11. 11        /**////创建StreamReader对象  
  12. 12        using (StreamReader sr = new StreamReader(Server.MapPath("createHTML") + "//template.html"))   
  13. 13        {  
  14. 14            String oneline;  
  15. 15              
  16. 16            /**////读取指定的HTML文件模板  
  17. 17            while ((oneline = sr.ReadLine()) != null)   
  18. 18            {  
  19. 19                strhtml.Append(oneline);  
  20. 20            }  
  21. 21            sr.Close();  
  22. 22        }  
  23. 23    }  
  24. 24    catch(Exception err)  
  25. 25    {  
  26. 26        /**////输出异常信息  
  27. 27        Response.Write(err.ToString());  
  28. 28    }  
  29. 29    /**////为标记数组赋值  
  30. 30    newContent[0] = txtTitle.Text;//标题  
  31. 31    newContent[1] = "BackColor='#cccfff'";//背景色  
  32. 32    newContent[2] = "#ff0000";//字体颜色  
  33. 33    newContent[3] = "100px";//字体大小  
  34. 34    newContent[4] = txtContent.Text;//主要内容  
  35. 35  
  36. 36    /**////根据上面新的内容生成html文件  
  37. 37    try  
  38. 38    {  
  39. 39        /**////指定要生成的HTML文件  
  40. 40        string fname = Server.MapPath("createHTML") +"//" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";  
  41. 41          
  42. 42        /**////替换html模版文件里的标记为新的内容  
  43. 43        for(int i=0;i < 5;i++)  
  44. 44        {  
  45. 45            strhtml.Replace("$htmlkey["+i+"]",newContent[i]);  
  46. 46        }  
  47. 47        /**////创建文件信息对象  
  48. 48        FileInfo finfo = new FileInfo(fname);  
  49. 49          
  50. 50        /**////以打开或者写入的形式创建文件流  
  51. 51        using(FileStream fs = finfo.OpenWrite())  
  52. 52        {  
  53. 53            /**////根据上面创建的文件流创建写数据流  
  54. 54            StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));  
  55. 55              
  56. 56            /**////把新的内容写到创建的HTML页面中  
  57. 57            sw.WriteLine(strhtml);  
  58. 58            sw.Flush();  
  59. 59            sw.Close();  
  60. 60        }  
  61. 61          
  62. 62        /**////设置超级链接的属性  
  63. 63        hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss")+".html";  
  64. 64        hyCreateFile.NavigateUrl = "createHTML/"+DateTime.Now.ToString("yyyymmddhhmmss")+".html";  
  65. 65    }  
  66. 66    catch(Exception err)  
  67. 67    {   
  68. 68        Response.Write (err.ToString());  
  69. 69    }  
  70. 70}  

进一步参考文件查看
1:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemiodirectoryinfoclasstopic.asp
2:http://www.clys.net/bbs/forum_posts.asp?TID=87&PN=1&get=last

C#对文本文件进行读写操作

读操作:

  1. using System;  
  2. using System.IO;  
  3.   
  4.   
  5.   
  6.   
  7. namespace ConsoleApplication2  
  8. {  
  9. /// <summary>  
  10. /// Summary description for Class2.  
  11. /// </summary>  
  12. public class Class1  
  13. {  
  14.    private const string FILE_NAME="MyFile.txt";  
  15.    public static void Main(String[] args)  
  16.    {     
  17.     if(!File.Exists(FILE_NAME)) //如果不文件存在,则抛出异常  
  18.     {  
  19.      Console.WriteLine("{0} does not exist!",FILE_NAME);  
  20.     }  
  21.      
  22.     StreamReader sr=File.OpenText(FILE_NAME);  
  23.     String input;  
  24.     while((input=sr.ReadLine())!=null)  
  25.     {  
  26.      Console.WriteLine(input);  
  27.     }  
  28.     Console.WriteLine("The end of the Stream has been reched.");  
  29.     sr.Close();  
  30.    }  
  31. }  
  32. }  

写操作:

  1. using System;  
  2. using System.IO;  
  3.   
  4.   
  5.   
  6.   
  7. namespace ConsoleApplication2  
  8. {  
  9. /// <summary>  
  10. /// Summary description for Class2.  
  11. /// </summary>  
  12. public class Class1  
  13. {  
  14.    private const string FILE_NAME="MyFile.txt";  
  15.    public static void Main(String[] args)  
  16.    {  
  17.     StreamWriter sr;  
  18.     string report;  
  19.     if(File.Exists(FILE_NAME)) //如果文件存在,则创建File.AppendText对象  
  20.     {  
  21.      sr=File.AppendText(FILE_NAME);  
  22.      report="appended";  
  23.     }  
  24.     else //如果文件不存在,则创建File.CreateText对象  
  25.     {  
  26.      sr=File.CreateText(FILE_NAME);  
  27.      report="created";  
  28.     }  
  29.      
  30.     sr.WriteLine("This is my first file.");  
  31.     Console.WriteLine("{0} {1}",FILE_NAME,report);  
  32.     sr.Close();  
  33.    }  
  34. }  
  35. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值