一、需求分析
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 ///18 /// 本地文件中保存登录信息19 /// 20 static void SaveLoginInfo()21 {22 #region 在本地保存登录信息23 //判断文件是否存在24 string loginDicPath = "E:\\Login";25 if (!Directory.Exists(loginDicPath))26 {27 Directory.CreateDirectory(loginDicPath);28 }29 string loginFilePath = loginDicPath + "\\login.txt";30 //可以指定盘符,也可以指定任意文件名,还可以为word等文件31 FileStream fs = new FileStream(loginFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);32 //创建写入流33 StreamWriter sw = new StreamWriter(fs);34 string testContent = "用户已登录";35 sw.WriteLine(testContent);36 sw.Close();37 #endregion38 }39 40 ///41 /// 读取登录信息42 /// 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 ///56 /// 遍历文件夹,计算文件夹中txt的数量和dll的数量57 /// 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 else83 {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 ///16 /// 下载网络文件17 /// 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 else32 {33 WebClient client = new WebClient();34 client.DownloadFile(webFileUrl, myDictionary + "/" + fileName);35 }36 37 }38 39 ///40 /// 判断网络文件是否存在41 /// 42 /// 43 ///44 static bool HttpFileExist(string fileUrl)45 {46 try47 {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 /// 65 /// 获取文件名称66 /// 67 /// 68 ///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#对文件的操作不仅仅是这些,还有很多操作,就不一一列举验证。
继续加油~