c#遍歷文件目錄及其子目錄並替換相應的文件內容

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace urlChange
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("替換該文件及其子文件夾下*html文檔內容。");
            Console.WriteLine("請輸入文件目錄:");
            string s = null;
            List<DirectoryInfo> fileList = new List<DirectoryInfo>();
            List<FileInfo> htmlList=new List<FileInfo>();

            //輸入文件url
            s = Console.ReadLine();
            //創建文件目錄
            DirectoryInfo dir = new DirectoryInfo(@s);

            //把文件目錄信息存到集合中
            fileList.Add(dir);

            //取得文件目錄中的子目錄
            DirectoryInfo[] dii = dir.GetDirectories();

            GetFileUrl1(fileList,dii);

            //此時,fileList存有所有目錄(包含子目錄)的信息
            Console.WriteLine("共有"+fileList.Count+"個文件夾\n");
            int i = 0;
            //循環去除每個目錄的信息
            foreach (DirectoryInfo dif in fileList)
            {
                //取得每個目錄的所有文件
                FileInfo[] fils = dif.GetFiles();
                //循環取得每個文件
                foreach (FileInfo fil in fils)
                {
                    //後綴名爲html的文件
                    if(fil.FullName.Contains((".html")))
                    {
                        //取得文件內容
                        ReplaceText(fil.FullName.ToString());
                        //把每個文件的信息存入集合
                        htmlList.Add(fil);
                        //輸出文件目錄與顯示總共有多少個文件
                        Console.WriteLine(fil.FullName+"---"+ ++i);
                    }
                }
            }
            Console.WriteLine("該文件夾及其所有子文件夾下共有"+htmlList.Count+"個文件\n");
            Console.WriteLine("替換成功!");
            Console.ReadKey();
        }


        public static void GetFileUrl1(List<DirectoryInfo> fileList, DirectoryInfo[] dir)
        {
            //取得子目錄中的子目錄
            foreach (DirectoryInfo dif in dir)
            {
                //把子目路信息存到集合
                fileList.Add(dif);
                //取得子目錄中的子目錄
                DirectoryInfo[] dii1 = dif.GetDirectories();
                //要是子目錄中還有目錄,則取得子目錄中的子目錄
                if (dii1.Length>0)
                {
                    GetFileUrl1(fileList,dii1);
                }
            }
        }

        public static void ReplaceText(string s)
        {
            string path = s;
            string con = "";
            //取得文件的內容
            FileStream fs=new FileStream(path,FileMode.Open,FileAccess.Read);
            StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312"),true);
            con = sr.ReadToEnd();
            //替換內容
            con = con.Replace("http:","");
            sr.Close();
            fs.Close();

            //取得文件的內容
            FileStream fs2 = new FileStream(path,FileMode.Open,FileAccess.Write);
            StreamWriter sw=new StreamWriter(fs2, Encoding.UTF8);
            //把替換後的文本內容存到文本中
            sw.WriteLine(con);
            sw.Close();
            fs2.Close();

        }
    }
}

轉載:https://blog.csdn.net/yh12346789/article/details/80146687 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章