C# 文件操作總結
阿新 • • 發佈:2019-03-06
上下 god request foreach pac reader adl static tps
一、需求分析
1.將信息記錄到本地記事本中。
2.將記錄的信息讀取出來。
3.計算出某個文件夾下所有後綴名為txt的數量和dll的數量。
4.從網絡上下載文件。
二、二話不說上代碼
1 using System; 2 using System.IO; 3 using System.Text; 4 5 namespace FileOperation 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 SaveLoginInfo();12 ReadLoginInfo(); 13 Ergodic(); 14 } 15 16 17 /// <summary> 18 /// 本地文件中保存登錄信息 19 /// </summary> 20 static void SaveLoginInfo() 21 { 22 #region 在本地保存登錄信息 23 //判斷文件是否存在 24 stringloginDicPath = "E:\\Login"; 25 if (!Directory.Exists(loginDicPath)) 26 { 27 Directory.CreateDirectory(loginDicPath); 28 } 29 string loginFilePath = loginDicPath + "\\login.txt"; 30 //可以指定盤符,也可以指定任意文件名,還可以為word等文件 31 FileStream fs = newFileStream(loginFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite); 32 //創建寫入流 33 StreamWriter sw = new StreamWriter(fs); 34 string testContent = "用戶已登錄"; 35 sw.WriteLine(testContent); 36 sw.Close(); 37 #endregion 38 } 39 40 /// <summary> 41 /// 讀取登錄信息 42 /// </summary> 43 static void ReadLoginInfo() 44 { 45 string loginFilePath = "E:\\Login\\login.txt"; 46 if (File.Exists(loginFilePath)) 47 { 48 StreamReader st = new StreamReader(loginFilePath, Encoding.UTF8); 49 string content = st.ReadToEnd(); 50 st.Close(); 51 Console.WriteLine(content); 52 } 53 } 54 55 /// <summary> 56 /// 遍歷文件夾,計算文件夾中txt的數量和dll的數量 57 /// </summary> 58 static void Ergodic() 59 { 60 string loginDicPath = "E:\\testDic"; 61 DirectoryInfo root = new DirectoryInfo(loginDicPath); 62 DirectoryInfo[] dics = root.GetDirectories(); 63 int txtNum = 0; 64 int dllNum = 0; 65 foreach (DirectoryInfo info in dics) 66 { 67 string path = info.FullName; 68 //獲取該文件夾下的所有文件 69 DirectoryInfo root_Children = new DirectoryInfo(path); 70 FileInfo[] filesChildren = root_Children.GetFiles(); 71 //獲取完整路徑名 72 foreach (FileInfo fileInfo in filesChildren) 73 { 74 if (fileInfo.Extension == ".txt") 75 { 76 txtNum += 1; 77 } 78 else if (fileInfo.Extension == ".dll") 79 { 80 dllNum += 1; 81 } 82 else 83 { 84 } 85 } 86 } 87 Console.WriteLine("txt的數量為{0},dll的數量為{1}", txtNum, dllNum); 88 } 89 } 90 }
註:對於需求3的目錄結構如下
需求4的代碼(下載網絡文件到本地)
1 using System; 2 using System.Linq; 3 using System.Net; 4 5 namespace FileOperation 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 DownloadWebFile(); 12 } 13 14 15 /// <summary> 16 /// 下載網絡文件 17 /// </summary> 18 static void DownloadWebFile() 19 { 20 //網絡文件地址 21 string webFileUrl = "http://127.0.0.1:8088//error-file.txt"; 22 //下載地址 23 string myDictionary = AppDomain.CurrentDomain.BaseDirectory; 24 //獲取文件名稱 25 string fileName = GetFileName(webFileUrl); 26 if (!HttpFileExist(webFileUrl)) 27 { 28 Console.WriteLine("服務器上沒有該文件"); 29 return; 30 } 31 else 32 { 33 WebClient client = new WebClient(); 34 client.DownloadFile(webFileUrl, myDictionary + "/" + fileName); 35 } 36 37 } 38 39 /// <summary> 40 /// 判斷網絡文件是否存在 41 /// </summary> 42 /// <param name="fileUrl"></param> 43 /// <returns></returns> 44 static bool HttpFileExist(string fileUrl) 45 { 46 try 47 { 48 //創建根據網絡地址的請求對象 49 HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(fileUrl)); 50 httpWebRequest.Method = "HEAD"; 51 httpWebRequest.Timeout = 1000; 52 //返回響應狀態是否是成功比較的布爾值 53 using (HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse()) 54 { 55 return response.StatusCode == HttpStatusCode.OK; 56 } 57 } 58 catch (Exception ex) 59 { 60 return false; 61 } 62 } 63 64 /// <summary> 65 /// 獲取文件名稱 66 /// </summary> 67 /// <param name="url"></param> 68 /// <returns></returns> 69 private static string GetFileName(string url) 70 { 71 string fileName = ""; 72 string[] str = url.Split(‘/‘); 73 fileName = str.Last(); 74 return fileName; 75 } 76 } 77 }
三、寫到後面的話
其實這篇都算不上是文件操作匯總,我只是把新學到的知識放到了一個小小的項目中,以便自己後期用到能隨時查詢出來。C#對文件的操作不僅僅是這些,還有很多操作,就不一一列舉驗證。
繼續加油~
C# 文件操作總結