• C# 文件操作总结


    一、需求分析

      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             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             #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#对文件的操作不仅仅是这些,还有很多操作,就不一一列举验证。

    继续加油~

  • 相关阅读:
    【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】
    【10.7校内测试】【队列滑窗】【2-sat】【贪心+栈二分+线段树(noip模拟好题)】【生日祭!】
    【10.6校内测试】【小模拟】【hash+线段树维护覆盖序列】
    【洛谷】NOIP提高组模拟赛Day1【组合数学】【贪心+背包】【网络流判断是否满流以及流量方案】
    【10.5校内测试】【DP】【概率】
    【洛谷】1174:打砖块
    【10.4校内测试】【轮廓线DP】【中国剩余定理】【Trie树+博弈】
    【10.3校内测试【国庆七天乐!】】【DP+组合数学/容斥】【spfa多起点多终点+二进制分类】
    【二分图】性质
    【9.23校内测试】【抽屉原理】【乱搞??(找众数】【Trie】
  • 原文地址:https://www.cnblogs.com/jas0203/p/10365337.html
Copyright © 2020-2023  润新知