C#封装的常用文件操作类实例
本文实例讲述了C#封装的常用文件操作类。分享给大家供大家参考。具体如下:
这个C#类封装了我们经常能用到的文件操作方法,包括读写文件、获取文件扩展名、复制文件、追加内容到文件、删除文件、移动文件、创建目录、递归删除文件及目录、列目录、列文件等,不可多得。
usingSystem; usingSystem.Text; usingSystem.Web; usingSystem.IO; namespaceDotNet.Utilities { publicclassFileOperate { #region写文件 protectedvoidWrite_Txt(stringFileName,stringContent) { Encodingcode=Encoding.GetEncoding("gb2312"); stringhtmlfilename=HttpContext.Current.Server.MapPath("Precious\\"+FileName+".txt");//保存文件的路径 stringstr=Content; StreamWritersw=null; { try { sw=newStreamWriter(htmlfilename,false,code); sw.Write(str); sw.Flush(); } catch{} } sw.Close(); sw.Dispose(); } #endregion #region读文件 protectedstringRead_Txt(stringfilename) { Encodingcode=Encoding.GetEncoding("gb2312"); stringtemp=HttpContext.Current.Server.MapPath("Precious\\"+filename+".txt"); stringstr=""; if(File.Exists(temp)) { StreamReadersr=null; try { sr=newStreamReader(temp,code); str=sr.ReadToEnd();//读取文件 } catch{} sr.Close(); sr.Dispose(); } else { str=""; } returnstr; } #endregion #region取得文件后缀名 /**************************************** *函数名称:GetPostfixStr *功能说明:取得文件后缀名 *参数:filename:文件名称 *调用示列: *stringfilename="aaa.aspx"; *strings=DotNet.Utilities.FileOperate.GetPostfixStr(filename); *****************************************/ ///<summary> ///取后缀名 ///</summary> ///<paramname="filename">文件名</param> ///<returns>.gif|.html格式</returns> publicstaticstringGetPostfixStr(stringfilename) { intstart=filename.LastIndexOf("."); intlength=filename.Length; stringpostfix=filename.Substring(start,length-start); returnpostfix; } #endregion #region写文件 /**************************************** *函数名称:WriteFile *功能说明:当文件不存时,则创建文件,并追加文件 *参数:Path:文件路径,Strings:文本内容 *调用示列: *stringPath=Server.MapPath("Default2.aspx"); *stringStrings="这是我写的内容啊"; *DotNet.Utilities.FileOperate.WriteFile(Path,Strings); *****************************************/ ///<summary> ///写文件 ///</summary> ///<paramname="Path">文件路径</param> ///<paramname="Strings">文件内容</param> publicstaticvoidWriteFile(stringPath,stringStrings) { if(!System.IO.File.Exists(Path)) { System.IO.FileStreamf=System.IO.File.Create(Path); f.Close(); f.Dispose(); } System.IO.StreamWriterf2=newSystem.IO.StreamWriter(Path,true,System.Text.Encoding.UTF8); f2.WriteLine(Strings); f2.Close(); f2.Dispose(); } #endregion #region读文件 /**************************************** *函数名称:ReadFile *功能说明:读取文本内容 *参数:Path:文件路径 *调用示列: *stringPath=Server.MapPath("Default2.aspx"); *strings=DotNet.Utilities.FileOperate.ReadFile(Path); *****************************************/ ///<summary> ///读文件 ///</summary> ///<paramname="Path">文件路径</param> ///<returns></returns> publicstaticstringReadFile(stringPath) { strings=""; if(!System.IO.File.Exists(Path)) s="不存在相应的目录"; else { StreamReaderf2=newStreamReader(Path,System.Text.Encoding.GetEncoding("gb2312")); s=f2.ReadToEnd(); f2.Close(); f2.Dispose(); } returns; } #endregion #region追加文件 /**************************************** *函数名称:FileAdd *功能说明:追加文件内容 *参数:Path:文件路径,strings:内容 *调用示列: *stringPath=Server.MapPath("Default2.aspx"); *stringStrings="新追加内容"; *DotNet.Utilities.FileOperate.FileAdd(Path,Strings); *****************************************/ ///<summary> ///追加文件 ///</summary> ///<paramname="Path">文件路径</param> ///<paramname="strings">内容</param> publicstaticvoidFileAdd(stringPath,stringstrings) { StreamWritersw=File.AppendText(Path); sw.Write(strings); sw.Flush(); sw.Close(); sw.Dispose(); } #endregion #region拷贝文件 /**************************************** *函数名称:FileCoppy *功能说明:拷贝文件 *参数:OrignFile:原始文件,NewFile:新文件路径 *调用示列: *stringOrignFile=Server.MapPath("Default2.aspx"); *stringNewFile=Server.MapPath("Default3.aspx"); *DotNet.Utilities.FileOperate.FileCoppy(OrignFile,NewFile); *****************************************/ ///<summary> ///拷贝文件 ///</summary> ///<paramname="OrignFile">原始文件</param> ///<paramname="NewFile">新文件路径</param> publicstaticvoidFileCoppy(stringOrignFile,stringNewFile) { File.Copy(OrignFile,NewFile,true); } #endregion #region删除文件 /**************************************** *函数名称:FileDel *功能说明:删除文件 *参数:Path:文件路径 *调用示列: *stringPath=Server.MapPath("Default3.aspx"); *DotNet.Utilities.FileOperate.FileDel(Path); *****************************************/ ///<summary> ///删除文件 ///</summary> ///<paramname="Path">路径</param> publicstaticvoidFileDel(stringPath) { File.Delete(Path); } #endregion #region移动文件 /**************************************** *函数名称:FileMove *功能说明:移动文件 *参数:OrignFile:原始路径,NewFile:新文件路径 *调用示列: *stringOrignFile=Server.MapPath("../说明.txt"); *stringNewFile=Server.MapPath("../../说明.txt"); *DotNet.Utilities.FileOperate.FileMove(OrignFile,NewFile); *****************************************/ ///<summary> ///移动文件 ///</summary> ///<paramname="OrignFile">原始路径</param> ///<paramname="NewFile">新路径</param> publicstaticvoidFileMove(stringOrignFile,stringNewFile) { File.Move(OrignFile,NewFile); } #endregion #region在当前目录下创建目录 /**************************************** *函数名称:FolderCreate *功能说明:在当前目录下创建目录 *参数:OrignFolder:当前目录,NewFloder:新目录 *调用示列: *stringOrignFolder=Server.MapPath("test/"); *stringNewFloder="new"; *DotNet.Utilities.FileOperate.FolderCreate(OrignFolder,NewFloder); *****************************************/ ///<summary> ///在当前目录下创建目录 ///</summary> ///<paramname="OrignFolder">当前目录</param> ///<paramname="NewFloder">新目录</param> publicstaticvoidFolderCreate(stringOrignFolder,stringNewFloder) { Directory.SetCurrentDirectory(OrignFolder); Directory.CreateDirectory(NewFloder); } ///<summary> ///创建文件夹 ///</summary> ///<paramname="Path"></param> publicstaticvoidFolderCreate(stringPath) { //判断目标目录是否存在如果不存在则新建之 if(!Directory.Exists(Path)) Directory.CreateDirectory(Path); } #endregion #region创建目录 publicstaticvoidFileCreate(stringPath) { FileInfoCreateFile=newFileInfo(Path);//创建文件 if(!CreateFile.Exists) { FileStreamFS=CreateFile.Create(); FS.Close(); } } #endregion #region递归删除文件夹目录及文件 /**************************************** *函数名称:DeleteFolder *功能说明:递归删除文件夹目录及文件 *参数:dir:文件夹路径 *调用示列: *stringdir=Server.MapPath("test/"); *DotNet.Utilities.FileOperate.DeleteFolder(dir); *****************************************/ ///<summary> ///递归删除文件夹目录及文件 ///</summary> ///<paramname="dir"></param> ///<returns></returns> publicstaticvoidDeleteFolder(stringdir) { if(Directory.Exists(dir))//如果存在这个文件夹删除之 { foreach(stringdinDirectory.GetFileSystemEntries(dir)) { if(File.Exists(d)) File.Delete(d);//直接删除其中的文件 else DeleteFolder(d);//递归删除子文件夹 } Directory.Delete(dir,true);//删除已空文件夹 } } #endregion #region将指定文件夹下面的所有内容copy到目标文件夹下面果目标文件夹为只读属性就会报错。 /**************************************** *函数名称:CopyDir *功能说明:将指定文件夹下面的所有内容copy到目标文件夹下面果目标文件夹为只读属性就会报错。 *参数:srcPath:原始路径,aimPath:目标文件夹 *调用示列: *stringsrcPath=Server.MapPath("test/"); *stringaimPath=Server.MapPath("test1/"); *DotNet.Utilities.FileOperate.CopyDir(srcPath,aimPath); *****************************************/ ///<summary> ///指定文件夹下面的所有内容copy到目标文件夹下面 ///</summary> ///<paramname="srcPath">原始路径</param> ///<paramname="aimPath">目标文件夹</param> 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(Exceptionee) { thrownewException(ee.ToString()); } } #endregion #region获取指定文件夹下所有子目录及文件(树形) /**************************************** *函数名称:GetFoldAll(stringPath) *功能说明:获取指定文件夹下所有子目录及文件(树形) *参数:Path:详细路径 *调用示列: *stringstrDirlist=Server.MapPath("templates"); *this.Literal1.Text=DotNet.Utilities.FileOperate.GetFoldAll(strDirlist); *****************************************/ ///<summary> ///获取指定文件夹下所有子目录及文件 ///</summary> ///<paramname="Path">详细路径</param> publicstaticstringGetFoldAll(stringPath) { stringstr=""; DirectoryInfothisOne=newDirectoryInfo(Path); str=ListTreeShow(thisOne,0,str); returnstr; } ///<summary> ///获取指定文件夹下所有子目录及文件函数 ///</summary> ///<paramname="theDir">指定目录</param> ///<paramname="nLevel">默认起始值,调用时,一般为0</param> ///<paramname="Rn">用于迭加的传入值,一般为空</param> ///<returns></returns> publicstaticstringListTreeShow(DirectoryInfotheDir,intnLevel,stringRn)//递归目录文件 { DirectoryInfo[]subDirectories=theDir.GetDirectories();//获得目录 foreach(DirectoryInfodirinfoinsubDirectories) { if(nLevel==0) { Rn+="├"; } else { string_s=""; for(inti=1;i<=nLevel;i++) { _s+="│ "; } Rn+=_s+"├"; } Rn+="<b>"+dirinfo.Name.ToString()+"</b><br/>"; FileInfo[]fileInfo=dirinfo.GetFiles();//目录下的文件 foreach(FileInfofInfoinfileInfo) { if(nLevel==0) { Rn+="│ ├"; } else { string_f=""; for(inti=1;i<=nLevel;i++) { _f+="│ "; } Rn+=_f+"│ ├"; } Rn+=fInfo.Name.ToString()+"<br/>"; } Rn=ListTreeShow(dirinfo,nLevel+1,Rn); } returnRn; } /**************************************** *函数名称:GetFoldAll(stringPath) *功能说明:获取指定文件夹下所有子目录及文件(下拉框形) *参数:Path:详细路径 *调用示列: *stringstrDirlist=Server.MapPath("templates"); *this.Literal2.Text=DotNet.Utilities.FileOperate.GetFoldAll(strDirlist,"tpl",""); *****************************************/ ///<summary> ///获取指定文件夹下所有子目录及文件(下拉框形) ///</summary> ///<paramname="Path">详细路径</param> ///<paramname="DropName">下拉列表名称</param> ///<paramname="tplPath">默认选择模板名称</param> publicstaticstringGetFoldAll(stringPath,stringDropName,stringtplPath) { stringstrDrop="<selectname=\""+DropName+"\"id=\""+DropName+"\"><optionvalue=\"\">--请选择详细模板--</option>"; stringstr=""; DirectoryInfothisOne=newDirectoryInfo(Path); str=ListTreeShow(thisOne,0,str,tplPath); returnstrDrop+str+"</select>"; } ///<summary> ///获取指定文件夹下所有子目录及文件函数 ///</summary> ///<paramname="theDir">指定目录</param> ///<paramname="nLevel">默认起始值,调用时,一般为0</param> ///<paramname="Rn">用于迭加的传入值,一般为空</param> ///<paramname="tplPath">默认选择模板名称</param> ///<returns></returns> publicstaticstringListTreeShow(DirectoryInfotheDir,intnLevel,stringRn,stringtplPath)//递归目录文件 { DirectoryInfo[]subDirectories=theDir.GetDirectories();//获得目录 foreach(DirectoryInfodirinfoinsubDirectories) { Rn+="<optionvalue=\""+dirinfo.Name.ToString()+"\""; if(tplPath.ToLower()==dirinfo.Name.ToString().ToLower()) { Rn+="selected"; } Rn+=">"; if(nLevel==0) { Rn+="┣"; } else { string_s=""; for(inti=1;i<=nLevel;i++) { _s+="│ "; } Rn+=_s+"┣"; } Rn+=""+dirinfo.Name.ToString()+"</option>"; FileInfo[]fileInfo=dirinfo.GetFiles();//目录下的文件 foreach(FileInfofInfoinfileInfo) { Rn+="<optionvalue=\""+dirinfo.Name.ToString()+"/"+fInfo.Name.ToString()+"\""; if(tplPath.ToLower()==fInfo.Name.ToString().ToLower()) { Rn+="selected"; } Rn+=">"; if(nLevel==0) { Rn+="│ ├"; } else { string_f=""; for(inti=1;i<=nLevel;i++) { _f+="│ "; } Rn+=_f+"│ ├"; } Rn+=fInfo.Name.ToString()+"</option>"; } Rn=ListTreeShow(dirinfo,nLevel+1,Rn,tplPath); } returnRn; } #endregion #region获取文件夹大小 /**************************************** *函数名称:GetDirectoryLength(stringdirPath) *功能说明:获取文件夹大小 *参数:dirPath:文件夹详细路径 *调用示列: *stringPath=Server.MapPath("templates"); *Response.Write(DotNet.Utilities.FileOperate.GetDirectoryLength(Path)); *****************************************/ ///<summary> ///获取文件夹大小 ///</summary> ///<paramname="dirPath">文件夹路径</param> ///<returns></returns> publicstaticlongGetDirectoryLength(stringdirPath) { if(!Directory.Exists(dirPath)) return0; longlen=0; DirectoryInfodi=newDirectoryInfo(dirPath); foreach(FileInfofiindi.GetFiles()) { len+=fi.Length; } DirectoryInfo[]dis=di.GetDirectories(); if(dis.Length>0) { for(inti=0;i<dis.Length;i++) { len+=GetDirectoryLength(dis[i].FullName); } } returnlen; } #endregion #region获取指定文件详细属性 /**************************************** *函数名称:GetFileAttibe(stringfilePath) *功能说明:获取指定文件详细属性 *参数:filePath:文件详细路径 *调用示列: *stringfile=Server.MapPath("robots.txt"); *Response.Write(DotNet.Utilities.FileOperate.GetFileAttibe(file)); *****************************************/ ///<summary> ///获取指定文件详细属性 ///</summary> ///<paramname="filePath">文件详细路径</param> ///<returns></returns> publicstaticstringGetFileAttibe(stringfilePath) { stringstr=""; System.IO.FileInfoobjFI=newSystem.IO.FileInfo(filePath); str+="详细路径:"+objFI.FullName+"<br>文件名称:"+objFI.Name+"<br>文件长度:"+objFI.Length.ToString()+"字节<br>创建时间"+objFI.CreationTime.ToString()+"<br>最后访问时间:"+objFI.LastAccessTime.ToString()+"<br>修改时间:"+objFI.LastWriteTime.ToString()+"<br>所在目录:"+objFI.DirectoryName+"<br>扩展名:"+objFI.Extension; returnstr; } #endregion } }
希望本文所述对大家的C#程序设计有所帮助。