吾知网

标题: c#替换文件目录及其子目录中的文件内容 [打印本页]

作者: jekeyhui99    时间: 2019-1-7 22:24
标题: 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();


        }

    }

}

--------------------- 

作者:清--水 

来源:CSDN 

原文:https://blog.csdn.net/yh12346789/article/details/80146687 






欢迎光临 吾知网 (http://5g99.com/bbs/) Powered by Discuz! X3.2