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