本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本文件、获取文件列表、读取日志文件、写入日志文件、创建HTML 文件、CreateDirectory方法的使用.修改文件或文件夹名称等方法使用..... 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:sixAgesixAge1 DirectoryInfo d1=d.CreateSubdirectory("sixAge1"); // d2指向c:sixAgesixAge1sixAge1_1 DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1"); // 将当前目录设为c:sixAge Directory.SetCurrentDirectory("c:\sixAge"); // 创建目录c:sixAgesixAge2 Directory.CreateDirectory("sixAge2"); // 创建目录c:sixAgesixAge2sixAge2_1 Directory.CreateDirectory("sixAge2\sixAge2_1"); 递归删除文件夹及文件 •〈%@PageLanguage=C#%〉 •〈%@Importnamespace="System.IO"%〉 •〈Scriptrunat=server〉 •publicvoidDeleteFolder(stringdir) •{ •if(Directory.Exists(dir))//如果 •存在这个文件夹删除之 •{ •foreach(stringdinDirectory. •GetFileSystemEntries(dir)) •{ •if(File.Exists(d)) •File.Delete(d);//直接删除其中的文件 •else •DeleteFolder(d);//递归删除子文件夹 •} •Directory.Delete(dir);//删除已空文件夹 •Response.Write(dir+"文件夹删除成功"); •} •else •Response.Write(dir+"该文件夹不存在");//如果 •文件夹不存在则提示 •} •protectedvoidPage_Load(Object •sender,EventArgse) •{ •stringDir="D:\gbook\11"; •DeleteFolder(Dir);//调用函数删除文件夹 •} • • •//======================================== •//实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面 •//如果目标文件夹为只读属性就会报错。 •//======================================== •publicstaticvoidCopyDir(stringsrcPath, •stringaimPath) •{ •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(stringfileinfileList) •{ •//先当作目录处理如果存在这个 •目录就递归Copy该目录下面的文件 •if(Directory.Exists(file)) •CopyDir(file,aimPath+Path.GetFileName(file)); •//否则直接Copy文件 •else •File.Copy(file,aimPath+Path.GetFileName(file),true); •} •} •catch(Exceptione) •{ •MessageBox.Show(e.ToString()); •} •} •//======================================== •//实现一个静态方法将指定文件夹下面的所有内容Detele •//测试的时候要小心操作,删除之后无法恢复。 •//======================================== •publicstaticvoidDeleteDir(stringaimPath) •{ •try •{ •//检查目标目录是否以目录分割字 •符结束如果不是则添加之 •if(aimPath[aimPath.Length-1]!= •Path.DirectorySeparatorChar) •aimPath+=Path.DirectorySeparatorChar; •//得到源目录的文件列表, •该里面是包含文件以及目录路径的一个数组 •//如果你指向Delete目标文件下面的 •文件而不包含目录请使用下面的方法 •//string[]fileList= •Directory.GetFiles(aimPath); •string[]fileList= •Directory.GetFileSystemEntries(aimPath); •//遍历所有的文件和目录 •foreach(stringfileinfileList) •{ •//先当作目录处理如果存在这个 •目录就递归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(Exceptione) •{ •MessageBox.Show(e.ToString()); •} •} • •需要引用命名空间: •usingSystem.IO; •///〈summary〉 •///拷贝文件夹(包括子文件夹)到指定文件夹下, •源文件夹和目标文件夹均需绝对路径. •格式:CopyFolder(源文件夹,目标文件夹); •///〈/summary〉 •///〈paramname="strFromPath"〉〈/param〉 •///〈paramname="strToPath"〉〈/param〉 • •//---------------------------------------- • •//---------------------------------------- •publicstaticvoidCopyFolder(stringstrFromPath, •stringstrToPath) •{ •//如果源文件夹不存在,则创建 •if(!Directory.Exists(strFromPath)) •{ •Directory.CreateDirectory(strFromPath); •} • •//取得要拷贝的文件夹名 •stringstrFolderName=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(inti=0;i〈strFiles.Length;i++) •{ •//取得拷贝的文件名,只取文件名,地址截掉。 •stringstrFileName=strFiles[i].Substring( •strFiles[i].LastIndexOf("")+1, •strFiles[i].Length-strFiles[i]. •LastIndexOf("")-1); •//开始拷贝文件,true表示覆盖同名文件 •File.Copy(strFiles[i],strToPath+"" •+strFolderName+""+strFileName,true); •} • •//创建DirectoryInfo实例 •DirectoryInfodirInfo=newDirectoryInfo( •strFromPath); •//取得源文件夹下的所有子文件夹名称 •DirectoryInfo[]ZiPath=dirInfo.GetDirectories(); •for(intj=0;j〈ZiPath.Length;j++) •{ •//获取所有子文件夹名 •stringstrZiPath=strFromPath+""+ •ZiPath[j].ToString(); •//把得到的子文件夹当成新的源文件夹, •从头开始新一轮的拷贝 •CopyFolder(strZiPath,strToPath+""+ •strFolderName); •} •} • • • • •C#文件操作:读取文本文件 •1/// 〈summary〉 •2/// 读取文本文件 •3/// 〈/summary〉 •4private void ReadFromTxtFile() •5{ •6 if(filePath.PostedFile. •FileName != "") •7 { •8 txtFilePath = •filePath.PostedFile.FileName; •9 fileExtName = •txtFilePath.Substring(txtFilePath. •LastIndexOf(".")+1,3); •10 •11 if(fileExtName !="txt" && •fileExtName != "TXT") •12 { •13 Response.Write("请选择文本文件"); •14 } •15 else •16 { •17 StreamReader fileStream = •new StreamReader(txtFilePath,Encoding.Default); •18 txtContent.Text = fileStream.ReadToEnd(); •19 fileStream.Close(); •20 } •21 } •22 } •C#文件操作:获取文件列表 •1/// 〈summary〉 •2/// 获取文件列表 •3/// 〈/summary〉 •4private void GetFileList() •5{ •6 string strCurDir,FileName,FileExt; •7 •8 ///文件大小 •9 long FileSize; •10 •11 ///最后修改时间; •12 DateTime FileModify; •13 •14 ///初始化 •15 if(!IsPostBack) •16 { •17 ///初始化时,默认为当前页面所在的目录 •18 strCurDir = Server.MapPath("."); •19 lblCurDir.Text = strCurDir; •20 txtCurDir.Text = strCurDir; •21 } •22 else •23 { •24 strCurDir = txtCurDir.Text; •25 txtCurDir.Text = strCurDir; •26 lblCurDir.Text = strCurDir; •27 } •28 FileInfo fi; •29 DirectoryInfo dir; •30 TableCell td; •31 TableRow tr; •32 tr = new TableRow(); •33 •34 ///动态添加单元格内容 •35 td = new TableCell(); •36 td.Controls.Add(new LiteralControl( •"文件名")); •37 tr.Cells.Add(td); •38 td = new TableCell(); •39 td.Controls.Add(new LiteralControl( "文件类型")); •40 tr.Cells.Add(td); •41 td = new TableCell(); •42 td.Controls.Add(new LiteralControl( "文件大小")); •43 tr.Cells.Add(td); •44 td = new TableCell(); •45 td.Controls.Add(new LiteralControl( "最后修改时间")); •46 tr.Cells.Add(td); •47 •48 tableDirInfo.Rows.Add(tr); •49 •50 ///针对当前目录建立目录引用对象 •51 DirectoryInfo dirInfo = new DirectoryInfo( txtCurDir.Text); •52 •53 ///循环判断当前目录下的文件和目录 •54 foreach(FileSystemInfo fsi in dirInfo. •GetFileSystemInfos()) •55 { •56 FileName = ""; •57 FileExt = ""; •58 FileSize = 0; •59 •60 ///如果是文件 •61 if(fsi is FileInfo) •62 { •63 fi = (FileInfo)fsi; •64 •65 ///取得文件名 •66 FileName = fi.Name; •67 •68 ///取得文件的扩展名 •69 FileExt = fi.Extension; •70 •71 ///取得文件的大小 •72 FileSize = fi.Length; •73 •74 ///取得文件的最后修改时间 •75 FileModify = fi.LastWriteTime; •76 } •77 •78 ///否则是目录 •79 else •80 { •81 dir = (DirectoryInfo)fsi; •82 •83 ///取得目录名 •84 FileName = dir.Name; •85 •86 ///取得目录的最后修改时间 •87 FileModify = dir.LastWriteTime; •88 •89 ///设置文件的扩展名为"文件夹" •90 FileExt = "文件夹"; •91 } •92 •93 ///动态添加表格内容 •94 tr = new TableRow(); •95 td = new TableCell(); •96 td.Controls.Add(new LiteralControl( FileName)); •97 tr.Cells.Add(td); •98 td = new TableCell(); •99 td.Controls.Add(new LiteralControl( FileExt)); •100 tr.Cells.Add(td); •101 td = new TableCell(); •102 td.Controls.Add(new LiteralControl( FileSize.ToString()+"字节")); •103 tr.Cells.Add(td); •104 td = new TableCell(); •105 td.Controls.Add(new LiteralControl( FileModify.ToString("yyyy-mm-dd hh:mm:ss"))); •106 tr.Cells.Add(td); •107 tableDirInfo.Rows.Add(tr); •108 } •109} •C#文件操作:读取日志文件 •1/// 〈summary〉 •2/// 读取日志文件 •3/// 〈/summary〉 •4private void ReadLogFile() •5{ •6 ///从指定的目录以打 开或者创建的形式读取日志文件 •7 FileStream fs = •new FileStream(Server.MapPath("upedFile" •)+"\logfile.txt", FileMode.OpenOrCreate, •FileAccess.Read); •8 •9 ///定义输出字符串 •10 StringBuilder output = new StringBuilder(); •11 •12 ///初始化该字符串的长度为0 •13 output.Length = 0; •14 •15 ///为上面创建的文件流创建读取数据流 •16 StreamReader read = new StreamReader(fs); •17 •18 ///设置当前流的起始位置为文件流的起始点 •19 read.BaseStream.Seek(0, SeekOrigin.Begin); •20 •21 ///读取文件 •22 while (read.Peek() 〉 -1) •23 { •24 ///取文件的一行内容并换行 •25 output.Append(read.ReadLine() + " "); •26 } •27 •28 ///关闭释放读数据流 •29 read.Close(); •30 •31 ///返回读到的日志文件内容 •32 return output.ToString(); •} • • •C#文件操作:写入日志文件 •1/// 〈summary〉 •2/// 写入日志文件 •3/// 〈/summary〉 •4/// 〈param name="input"〉〈/param〉 •5private void WriteLogFile(string input) •6{ •7 ///指定日志文件的目录 •8 string fname = Server.MapPath("upedFile") + "\logfile.txt"; •9 ///定义文件信息对象 •10 FileInfo finfo = new FileInfo(fname); •11 •12 ///判断文件是否存在以及是否大于2K •13 if ( finfo.Exists && finfo.Length 〉 2048 ) •14 { •15 ///删除该文件 •16 finfo.Delete(); •17 } •18 ///创建只写文件流 •19 using(FileStream fs = finfo.OpenWrite()) •20 { •21 ///根据上面创建的文件流创建写数据流 •22 StreamWriter w = new StreamWriter(fs); •23 •24 ///设置写数据流的起始位置为文件流的末尾 •25 w.BaseStream.Seek(0, SeekOrigin.End); •26 •27 ///写入“Log Entry : ” •28 w.Write(" Log Entry : "); •29 •30 ///写入当前系统时间并换行 •31 w.Write("{0} {1} ", DateTime.Now. •ToLongTimeString(), •32 DateTime.Now.ToLongDateString()); •33 •34 ///写入日志内容并换行 •35 w.Write(input + " "); •36 •37 ///写入----------------“并换行 •38 w.Write("------------------ "); •39 •40 ///清空缓冲区内容,并把缓冲区内容写入基础流 •41 w.Flush(); •42 •43 ///关闭写数据流 •44 w.Close(); •45 } •46} •C#文件操作:创建HTML文件 •1/// 〈summary〉 •2/// 创建HTML文件 •3/// 〈/summary〉 •4private void CreateHtmlFile() •5{ •6 ///定义和html标记数目一致的数组 •7 string[] newContent = new string[5]; •8 StringBuilder strhtml = •new StringBuilder(); •9 try •10 { •11 ///创建StreamReader对象 •12 using (StreamReader sr = •new StreamReader(Server.MapPath("createHTML") + "\template.html")) •13 { •14 String oneline; •15 •16 ///读取指定的HTML文件模板 •17 while ((oneline = sr.ReadLine()) •!= null) •18 { •19 strhtml.Append(oneline); •20 } •21 sr.Close(); •22 } •23 } •24 catch(Exception err) •25 { •26 ///输出异常信息 •27 Response.Write(err.ToString()); •28 } •29 ///为标记数组赋值 •30 newContent[0] = txtTitle.Text;//标题 •31 newContent[1] = "BackColor='#cccfff'";//背景色 •32 newContent[2] = "#ff0000";//字体颜色 •33 newContent[3] = "100px";//字体大小 •34 newContent[4] = txtContent.Text;//主要内容 •35 •36 ///根据上面新的内容生成html文件 •37 try •38 { •39 ///指定要生成的HTML文件 •40 string fname = Server.MapPath( "createHTML") +"" + DateTime.Now.ToString( •"yyyymmddhhmmss") + ".html"; •41 •42 ///替换html模版文件里的标记为新的内容 •43 for(int i=0;i 〈 5;i++) •44 { •45 strhtml.Replace("$htmlkey["+i+"]",newContent[i]); •46 } •47 ///创建文件信息对象 •48 FileInfo finfo = new FileInfo(fname); •49 •50 ///以打开或者写入的形式创建文件流 •51 using(FileStream fs = finfo.OpenWrite()) •52 { •53 ///根据上面创建的文件流创建写数据流 •54 StreamWriter sw = new StreamWriter(fs,System. •Text.Encoding.GetEncoding("GB2312")); •55 •56 ///把新的内容写到创建的HTML页面中 •57 sw.WriteLine(strhtml); •58 sw.Flush(); •59 sw.Close(); •60 } •61 •62 ///设置超级链接的属性 •63 hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss")+".html"; •64 hyCreateFile.NavigateUrl = " •createHTML/"+DateTime.Now.ToString(" yyyymmddhhmmss")+".html";65 } •66 catch(Exception err) •67 { •68 Response.Write (err.ToString()); •69 } • } CreateDirectory方法的使用 using System; using System.IO; class Test { public static void Main() { // Specify the directory you want to manipulate. string path = @"c:MyDir"; try { // Determine whether the directory exists. if (Directory.Exists(path)) { Console.WriteLine("That path exists already."); return; } // Try to create the directory. DirectoryInfo di = Directory.CreateDirectory(path); Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path)); // Delete the directory. di.Delete(); Console.WriteLine("The directory was deleted successfully."); } catch (Exception e) { Console.WriteLine("The process failed: {0}", e.ToString()); } finally {} } } C#修改文件或文件夹名称 参考文档,做了个demo,move()方法其实就是重命名的;另外,使用DirectoryInfo中的moveto也是可以实现的。 sourceCode: string srcFileName = @"D:/a.txt"; string destFileName = @"D:/b.txt"; string srcFolderPath = @"D:/1"; string destFolderPath = @"D:/6"; //方法一 if (System.IO.File.Exists(srcFileName)) { System.IO.File.Move(srcFileName, destFileName); } if (System.IO.Directory.Exists(srcFolderPath)) { System.IO.Directory.Move(srcFolderPath, destFolderPath); } //方法二 if (System.IO.File.Exists(srcFileName)) { System.IO.FileInfo file = new System.IO.FileInfo(srcFileName); file.MoveTo(destFileName); } if (System.IO.Directory.Exists(srcFolderPath)) { System.IO.DirectoryInfo folder = new System.IO.DirectoryInfo(srcFolderPath); folder.MoveTo(destFolderPath); }