c# .net獲取文件夾下的所有文件(多層遞歸),並獲取區間數據(Jsion,xml等數據)寫出到處理文件,學習分享~


   static void Main(string[] args)
        {

     string path = string.Format(@"C:\Users\Administrator\Desktop\{0}", @"shenzheng");//根目錄
            List<string> filePaths = GetAllDirectories(path);//返回根目錄下所有文件(包括路徑)的集合
            foreach (var item in filePaths)
            {
                StreamReader read = new StreamReader(item, Encoding.UTF8);//根據文件路徑獲取文件流
                string fileName = Path.GetFileNameWithoutExtension(item);//文件名
                string filePath = Path.GetDirectoryName(item);//文件所在文件夾
                if (!read.EndOfStream)//是否讀取完成
                {
                    string aline = read.ReadToEnd();//讀取全部------//string aline = read.ReadLine();讀取一行
                    Console.WriteLine(read.ReadLine());
                    string keyStar = "***";//關鍵字開始
                    string ketEnd = "&&&";//關鍵字結束//獲取之間的字符串
                    int star = aline.IndexOf(keyStar) + keyStar.Length;//加上keyStar所占的位數
                    int end = aline.IndexOf(ketEnd);
                    if (star > 0 && end > star)//未找到關鍵字
                    {
                        string newstr = aline.Substring(star, end - star);
                        Console.WriteLine(newstr);//打印到控制台,查看是否截取想要的信息
                        Console.WriteLine(fileName + "打印完畢");
                        //char[] dd = new char[] { ']', ',' };
                        string[] strs = newstr.Split(new string[] { "分割字符串" }, StringSplitOptions.RemoveEmptyEntries);//根據規則分割你想要的字符串獲得字符串集合
                        StreamWriter sw = new StreamWriter(@"C:\Users\Administrator\Desktop\out\" + fileName + "處理.txt", false);//輸出目錄及文件名稱定義
                        for (int i = 0; i < strs.Count(); i++)
                        {
                            Console.WriteLine(strs[i] + "," + (i + 1).ToString());//打印到控制台
                            sw.WriteLine(strs[i] + "," + (i + 1).ToString());//寫到文件
                            sw.Flush();//清空StreamWriter緩存,否則會寫不全
                            Thread.Sleep(20);

                        }
                        Console.WriteLine(fileName + "寫入完畢");
                        Console.ReadKey();
                    }
                    else
                    {
                        Console.WriteLine("當前文檔" + fileName + "沒有符合規則的數據,跳過!");
                    }
                }
            }

      static List<string> filesList = new List<string>();
          public static List<string> GetAllDirectories(string rootPath)
          {
              string[] subPaths = Directory.GetDirectories(rootPath);//得到所有子目錄

              foreach (string path in subPaths)
              {
                  GetAllDirectories(path);//對每一個字目錄做與根目錄相同的操作:即找到子目錄並將當前目錄的文件名存入List
              }
              string[] files = Directory.GetFiles(rootPath);
              foreach (string file in files)
              {
                  filesList.Add(file);//將當前目錄中的所有文件全名存入文件List
              }
              return filesList;
          }

  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM