using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace ChangeFileName
{
public partial class jiance : Form
{
public int tem = 0;
public List<string> tem_list = new List<string>();
public jiance()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fbd.SelectedPath;
}
}
private void button2_Click(object sender, EventArgs e)
{
DirectoryInfo d = new DirectoryInfo(textBox1.Text);
GetAll(d);
MessageBox.Show("操作完成");
}
private void button3_Click(object sender, EventArgs e)
{
tem = 0;
tem_list = new List<string>();
DirectoryInfo d = new DirectoryInfo(textBox1.Text);
ReplaceAll(d);
MessageBox.Show("操作完成");
label3.Text = tem.ToString();
var tem_str="";
if (tem != 0)
{
for (int i = 0; i < tem_list.Count; i++)
{
tem_str += tem_list[i] + "\r\n";
}
}
textBox4.Text = tem_str;
}
void GetAll(DirectoryInfo dir)//搜索文件夹中的文件
{
FileInfo[] allFile = dir.GetFiles();
foreach (FileInfo fi in allFile)
{
if (fi.Extension == ".php" || fi.Extension == ".html" || fi.Extension == ".htm" || fi.Extension == ".js" || fi.Extension == ".css")
{
// var fileName = fi.Name;
var fileName = fi.FullName;
//防止文本字符中有特殊字符。必须用Encoding.Default
StreamReader reader = new StreamReader(fileName, Encoding.Default);
String a = reader.ReadToEnd();
//将a.hhp文件中bb替换为cc。
a = a.Replace(textBox2.Text.Trim() + GetValue(a, textBox2.Text.Trim(), textBox3.Text.Trim()) + textBox3.Text.Trim(), "");
//a.hhp重命名为b.hhp
//防止文本字符中有特殊字符。必须用Encoding.Default
StreamWriter readTxt = new StreamWriter(@"b.hhp", false, Encoding.Default);
readTxt.Write(a);
readTxt.Flush();
readTxt.Close();
reader.Close();
//b.hhp重命名为a.hhp,并删除b.hhp
File.Copy(@"b.hhp", fileName, true);
File.Delete(@"b.hhp");
}
}
DirectoryInfo[] allDir = dir.GetDirectories();
foreach (DirectoryInfo d in allDir)
{
GetAll(d);
}
}
void ReplaceAll(DirectoryInfo dir)//搜索文件夹中的文件
{
FileInfo[] allFile = dir.GetFiles();
foreach (FileInfo fi in allFile)
{
if (fi.Extension == ".php" || fi.Extension == ".html" || fi.Extension == ".htm" || fi.Extension == ".js" || fi.Extension == ".css" || fi.Extension == ".txt")
{
// var fileName = fi.Name;
var fileName = fi.FullName;
//防止文本字符中有特殊字符。必须用Encoding.Default
StreamReader reader = new StreamReader(fileName, Encoding.Default);
String a = reader.ReadToEnd();
var stringtem = GetValue(a, textBox2.Text.Trim(), textBox3.Text.Trim());
if (!string.IsNullOrEmpty(stringtem))
{
tem++;
tem_list.Add(fileName);
}
}
}
DirectoryInfo[] allDir = dir.GetDirectories();
foreach (DirectoryInfo d in allDir)
{
ReplaceAll(d);
}
}
/// <summary>
/// 获得字符串中开始和结束字符串中间得值
/// </summary>
/// <param name="str">字符串</param>
/// <param name="s">开始</param>
/// <param name="e">结束</param>
/// <returns></returns>
public static string GetValue(string str, string s, string e)
{
Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Match(str).Value;
}
}
}