1. 程式人生 > 實用技巧 >C#檔案操作類庫方法大氣

C#檔案操作類庫方法大氣

C#追加檔案 
StreamWriter sw = File.AppendText(Server.MapPath(".")+"\myText.txt"); 
sw.WriteLine("test"); 
sw.WriteLine("泛目錄"); 
sw.WriteLine("www.fanmulu.cn"); 
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"); 遞迴刪除資料夾及檔案 <%@ 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); } } 一.讀取文字檔案 /**//**//**//// <summary> /// 讀取文字檔案 /// </summary> private void ReadFromTxtFile() { if(filePath.PostedFile.FileName != "") { txtFilePath =filePath.PostedFile.FileName; fileExtName = txtFilePath.Substring(txtFilePath.LastIndexOf(".")+1,3); if(fileExtName !="txt" && fileExtName != "TXT") { Response.Write("請選擇文字檔案"); } else { StreamReader fileStream = new StreamReader(txtFilePath,Encoding.Default); txtContent.Text = fileStream.ReadToEnd(); fileStream.Close(); } } } .net遍歷資料夾與檔案 using System.IO; string[] dirs = Directory.GetDirectories(@"F:\net\"); foreach (string dir in dirs) { Response.Write(dir.ToString()+"<br>"); }//遍歷所有資料夾 string[] files = Directory.GetFiles(@"F:\net\emots\"); foreach (string file in files) { Response.Write(file.ToString() + "<br>"); //Directory.Move(file.ToString(), file.ToString().Replace("emot", "emots").ToString());//可以移動檔案,重新命名 } //遍歷所有檔案 ________________________________________ Asp.Net檔案操作基類(讀取,刪除,批量拷貝,刪除,寫入,獲取資料夾大小,檔案屬性,遍歷目錄) using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Text; using System.IO; namespace EC { /// <summary> /// FileObj 的摘要說明 /// </summary> public class FileObj { #region 建構函式 private bool _alreadyDispose = false; public FileObj() { // // TODO: 在此處新增建構函式邏輯 // } ~FileObj() { Dispose(); ; } protected virtual void Dispose(bool isDisposing) { if (_alreadyDispose) return; //if (isDisposing) //{ // if (xml != null) // { // xml = null; // } //} _alreadyDispose = true; } #endregion #region IDisposable 成員 public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } #endregion #region 取得檔案字尾名 /**************************************** * 函式名稱:GetPostfixStr * 功能說明:取得檔案字尾名 * 參 數:filename:檔名稱 * 呼叫示列: * string filename = "aaa.aspx"; * string s = EC.FileObj.GetPostfixStr(filename); *****************************************/ /// <summary> /// 取字尾名 /// </summary> /// <param name="filename">檔名</param> /// <returns>.gif|.html格式</returns> public static string GetPostfixStr(string filename) { int start = filename.LastIndexOf("."); int length = filename.Length; string postfix = filename.Substring(start, length - start); return postfix; } #endregion #region 寫檔案 /**************************************** * 函式名稱:WriteFile * 功能說明:當檔案不存時,則建立檔案,並追加檔案 * 參 數:Path:檔案路徑,Strings:文字內容 * 呼叫示列: * string Path = Server.MapPath("Default2.aspx"); * string Strings = "這是我寫的內容啊"; * EC.FileObj.WriteFile(Path,Strings); *****************************************/ /// <summary> /// 寫檔案 /// </summary> /// <param name="Path">檔案路徑</param> /// <param name="Strings">檔案內容</param> public static void WriteFile(string Path, string Strings) { if (!System.IO.File.Exists(Path)) { //Directory.CreateDirectory(Path); System.IO.FileStream f = System.IO.File.Create(Path); f.Close(); f.Dispose(); } System.IO.StreamWriter f2 = new System.IO.StreamWriter(Path, true, System.Text.Encoding.UTF8); f2.WriteLine(Strings); f2.Close(); f2.Dispose(); } #endregion #region 讀檔案 /**************************************** * 函式名稱:ReadFile * 功能說明:讀取文字內容 * 參 數:Path:檔案路徑 * 呼叫示列: * string Path = Server.MapPath("Default2.aspx"); * string s = EC.FileObj.ReadFile(Path); *****************************************/ /// <summary> /// 讀檔案 /// </summary> /// <param name="Path">檔案路徑</param> /// <returns></returns> public static string ReadFile(string Path) { string s = ""; if (!System.IO.File.Exists(Path)) s = "不存在相應的目錄"; else { StreamReader f2 = new StreamReader(Path, System.Text.Encoding.GetEncoding("gb2312")); s = f2.ReadToEnd(); f2.Close(); f2.Dispose(); } return s; } #endregion #region 追加檔案 /**************************************** * 函式名稱:FileAdd * 功能說明:追加檔案內容 * 參 數:Path:檔案路徑,strings:內容 * 呼叫示列: * string Path = Server.MapPath("Default2.aspx"); * string Strings = "新追加內容"; * EC.FileObj.FileAdd(Path, Strings); *****************************************/ /// <summary> /// 追加檔案 /// </summary> /// <param name="Path">檔案路徑</param> /// <param name="strings">內容</param> public static void FileAdd(string Path, string strings) { StreamWriter sw = File.AppendText(Path); sw.Write(strings); sw.Flush(); sw.Close(); sw.Dispose(); } #endregion #region 拷貝檔案 /**************************************** * 函式名稱:FileCoppy * 功能說明:拷貝檔案 * 參 數:OrignFile:原始檔案,NewFile:新檔案路徑 * 呼叫示列: * string OrignFile = Server.MapPath("Default2.aspx"); * string NewFile = Server.MapPath("Default3.aspx"); * EC.FileObj.FileCoppy(OrignFile, NewFile); *****************************************/ /// <summary> /// 拷貝檔案 /// </summary> /// <param name="OrignFile">原始檔案</param> /// <param name="NewFile">新檔案路徑</param> public static void FileCoppy(string OrignFile, string NewFile) { File.Copy(OrignFile, NewFile, true); } #endregion #region 刪除檔案 /**************************************** * 函式名稱:FileDel * 功能說明:刪除檔案 * 參 數:Path:檔案路徑 * 呼叫示列: * string Path = Server.MapPath("Default3.aspx"); * EC.FileObj.FileDel(Path); *****************************************/ /// <summary> /// 刪除檔案 /// </summary> /// <param name="Path">路徑</param> public static void FileDel(string Path) { File.Delete(Path); } #endregion #region 移動檔案 /**************************************** * 函式名稱:FileMove * 功能說明:移動檔案 * 參 數:OrignFile:原始路徑,NewFile:新檔案路徑 * 呼叫示列: * string OrignFile = Server.MapPath("../說明.txt"); * string NewFile = Server.MapPath("../../說明.txt"); * EC.FileObj.FileMove(OrignFile, NewFile); *****************************************/ /// <summary> /// 移動檔案 /// </summary> /// <param name="OrignFile">原始路徑</param> /// <param name="NewFile">新路徑</param> public static void FileMove(string OrignFile, string NewFile) { File.Move(OrignFile, NewFile); } #endregion #region 在當前目錄下建立目錄 /**************************************** * 函式名稱:FolderCreate * 功能說明:在當前目錄下建立目錄 * 參 數:OrignFolder:當前目錄,NewFloder:新目錄 * 呼叫示列: * string OrignFolder = Server.MapPath("test/"); * string NewFloder = "new"; * EC.FileObj.FolderCreate(OrignFolder, NewFloder); *****************************************/ /// <summary> /// 在當前目錄下建立目錄 /// </summary> /// <param name="OrignFolder">當前目錄</param> /// <param name="NewFloder">新目錄</param> public static void FolderCreate(string OrignFolder, string NewFloder) { Directory.SetCurrentDirectory(OrignFolder); Directory.CreateDirectory(NewFloder); } ________________________________________[回覆]Asp.Net 檔案操作基類 using system; using system.io; using system.text; using system.data; using system.web.ui; using system.web.ui.webcontrols; namespace ec { /// <summary> /// 檔案操作類 /// </summary> public class fileobj : idisposable { private bool _alreadydispose = false; #region 建構函式 public fileobj() { // // todo: 在此處新增建構函式邏輯 // } ~fileobj() { dispose(); ; } protected virtual void dispose(bool isdisposing) { if (_alreadydispose) return; //if (isdisposing) //{ // if (xml != null) // { // xml = null; // } //} _alreadydispose = true; } #endregion #region idisposable 成員 public void dispose() { dispose(true); gc.suppressfinalize(this); } #endregion #region 取得檔案字尾名 /**************************************** * 函式名稱:getpostfixstr * 功能說明:取得檔案字尾名 * 參 數:filename:檔名稱 * 呼叫示列: * string filename = "aaa.aspx"; * string s = ec.fileobj.getpostfixstr(filename); *****************************************/ /// <summary> /// 取字尾名 /// </summary> /// <param name="filename">檔名</param> /// <returns>.gif|.html格式</returns> public static string getpostfixstr(string filename) { int start = filename.lastindexof("."); int length = filename.length; string postfix = filename.substring(start, length - start); return postfix; } #endregion #region 寫檔案 /**************************************** * 函式名稱:writefile * 功能說明:寫檔案,會覆蓋掉以前的內容 * 參 數:path:檔案路徑,strings:文字內容 * 呼叫示列: * string path = server.mappath("default2.aspx"); * string strings = "這是我寫的內容啊"; * ec.fileobj.writefile(path,strings); *****************************************/ /// <summary> /// 寫檔案 /// </summary> /// <param name="path">檔案路徑</param> /// <param name="strings">檔案內容</param> public static void writefile(string path, string strings) { if (!system.io.file.exists(path)) { system.io.filestream f = system.io.file.create(path); f.close(); } system.io.streamwriter f2 = new system.io.streamwriter(path, false, system.text.encoding.getencoding("gb2312")); f2.write(strings); f2.close(); f2.dispose(); } #endregion #region 讀檔案 /**************************************** * 函式名稱:readfile * 功能說明:讀取文字內容 * 參 數:path:檔案路徑 * 呼叫示列: * string path = server.mappath("default2.aspx"); * string s = ec.fileobj.readfile(path); *****************************************/ /// <summary> /// 讀檔案 /// </summary> /// <param name="path">檔案路徑</param> /// <returns></returns> public static string readfile(string path) { string s = ""; if (!system.io.file.exists(path)) s = "不存在相應的目錄"; else { streamreader f2 = new streamreader(path, system.text.encoding.getencoding("gb2312")); s = f2.readtoend(); f2.close(); f2.dispose(); } return s; } #endregion #region 追加檔案 /**************************************** * 函式名稱:fileadd * 功能說明:追加檔案內容 * 參 數:path:檔案路徑,strings:內容 * 呼叫示列: * string path = server.mappath("default2.aspx"); * string strings = "新追加內容"; * ec.fileobj.fileadd(path, strings); *****************************************/ /// <summary> /// 追加檔案 /// </summary> /// <param name="path">檔案路徑</param> /// <param name="strings">內容</param> public static void fileadd(string path, string strings) { streamwriter sw = file.appendtext(path); sw.write(strings); sw.flush(); sw.close(); } #endregion #region 拷貝檔案 /**************************************** * 函式名稱:filecoppy * 功能說明:拷貝檔案 * 參 數:orignfile:原始檔案,newfile:新檔案路徑 * 呼叫示列: * string orignfile = server.mappath("default2.aspx"); * string newfile = server.mappath("default3.aspx"); * ec.fileobj.filecoppy(orignfile, newfile); *****************************************/ /// <summary> /// 拷貝檔案 /// </summary> /// <param name="orignfile">原始檔案</param> /// <param name="newfile">新檔案路徑</param> public static void filecoppy(string orignfile, string newfile) { file.copy(orignfile, newfile, true); } #endregion #region 刪除檔案 /**************************************** * 函式名稱:filedel * 功能說明:刪除檔案 * 參 數:path:檔案路徑 * 呼叫示列: * string path = server.mappath("default3.aspx"); * ec.fileobj.filedel(path); *****************************************/ /// <summary> /// 刪除檔案 /// </summary> /// <param name="path">路徑</param> public static void filedel(string path) { file.delete(path); } #endregion #region 移動檔案 /**************************************** * 函式名稱:filemove * 功能說明:移動檔案 * 參 數:orignfile:原始路徑,newfile:新檔案路徑 * 呼叫示列: * string orignfile = server.mappath("../說明.txt"); * string newfile = server.mappath("../../說明.txt"); * ec.fileobj.filemove(orignfile, newfile); *****************************************/ /// <summary> /// 移動檔案 /// </summary> /// <param name="orignfile">原始路徑</param> /// <param name="newfile">新路徑</param> public static void filemove(string orignfile, string newfile) { file.move(orignfile, newfile); } #endregion #region 在當前目錄下建立目錄 /**************************************** * 函式名稱:foldercreate * 功能說明:在當前目錄下建立目錄 * 參 數:orignfolder:當前目錄,newfloder:新目錄 * 呼叫示列: * string orignfolder = server.mappath("test/"); * string newfloder = "new"; * ec.fileobj.foldercreate(orignfolder, newfloder); *****************************************/ /// <summary> /// 在當前目錄下建立目錄 /// </summary> /// <param name="orignfolder">當前目錄</param> /// <param name="newfloder">新目錄</param> public static void foldercreate(string orignfolder, string newfloder) { directory.setcurrentdirectory(orignfolder); directory.createdirectory(newfloder); } #endregion #region 遞迴刪除資料夾目錄及檔案 /**************************************** * 函式名稱:deletefolder * 功能說明:遞迴刪除資料夾目錄及檔案 * 參 數:dir:資料夾路徑 * 呼叫示列: * string dir = server.mappath("test/"); * ec.fileobj.deletefolder(dir); *****************************************/ /// <summary> /// 遞迴刪除資料夾目錄及檔案 /// </summary> /// <param name="dir"></param> /// <returns></returns> public static 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); //刪除已空資料夾 } } #endregion #region 將指定資料夾下面的所有內容copy到目標資料夾下面 果目標資料夾為只讀屬性就會報錯。 /**************************************** * 函式名稱:CopyDir * 功能說明:將指定資料夾下面的所有內容copy到目標資料夾下面 果目標資料夾為只讀屬性就會報錯。 * 參 數:srcPath:原始路徑,aimPath:目標資料夾 * 呼叫示列: * string srcPath = Server.MapPath("test/"); * string aimPath = Server.MapPath("test1/"); * EC.FileObj.CopyDir(srcPath,aimPath); *****************************************/ /// <summary> /// 指定資料夾下面的所有內容copy到目標資料夾下面 /// </summary> /// <param name="srcPath">原始路徑</param> /// <param name="aimPath">目標資料夾</param> 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 ee) { throw new Exception(ee.ToString()); } } #endregion