工具:
SplitContainer:控件是一个分割容器,用于在窗体或用户控件中创建一个可以分隔成两个可调整大小的区域的面板。
分为两块:
原文件列表:lable控件:提供运行时信息或说明性文字
ListBox控件:显示用户可以从中选择项的列表
ListBox更改属性Name (文章里的属性名为lbFIleList),(另一边的属性名为lblReFileList)
目录:lable控件 更改属性Name (文章里的属性名为tbPath)
输入框:TextBox控件: 允许用户输入文本,并提供多行编辑或密码字符或掩码功能。 (文章里的属性名为tbPath)
选择文件:Button按钮 (文章里的属性名为btnSelectFile)
清空列表:Button按钮 (文章里的属性名为btnClearList)
批量重命名:Button按钮 (文章里的属性名为btnPLCMM)
打开目录:Button按钮 (文章里的属性名为btnOpenML)
打开软件目录:Button按钮 (文章里的属性名为btnDKRJML)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnSelectFile_Click(object sender, EventArgs e)
{
//FolderBrowserDialog用于选择文件夹的对话框
//实例化一个目录选择框
FolderBrowserDialog dialog = new FolderBrowserDialog();
//判断对话框的结果
//dialog.ShowDialog()显示文件夹选择对话框 等待用户选择
//DialogResult.OK用户点击,会返回DialogResult.OK
if (dialog.ShowDialog() == DialogResult.OK)
{
//用于显示用户选择的文件夹路径
tbPath.Text = dialog.SelectedPath;
//ShowFiles:这是一个自定义方法,
//它接收一个字符串参数path,这个参数是用户选择的文件夹路径。
//这个方法的目的是显示该路径下的所有文件,但当前的实现是空的,
//你需要在这个方法中添加相应的逻辑。
ShowFiles(tbPath.Text);
}
}
//显示文件列表:
private void ShowFiles(string path)
{
//实例化一个目录信息
//使用DirectoryInfo类来获取指定路径的目录信息。
DirectoryInfo directoryInfo = new DirectoryInfo(path);
//使用GetFiles方法获取目录下的所有文件(不包括子目录中的文件)。
FileInfo[] files = directoryInfo.GetFiles();
//遍历所有文件,
//并将每个文件的完整路径添加到名为lbFIleList的列表框控件中。
foreach (FileInfo file in files)
{
lbFIleList.Items.Add(file.FullName);
}
}
//批量重命名:
private void btnPLCMM_Click(object sender, EventArgs e)
{
//判断输入框里面是否是空值
if (string.IsNullOrEmpty(tbPath.Text))
{
MessageBox.Show("请选选择目录,再对目录下的文件进行重命名");
return;
}
//判断lbFIleList是否有内容
if (lbFIleList.Items.Count == 0)
{
MessageBox.Show("你选择的目录没有可以重命名的文件,请切换目录");
return;
}
//重命名
//使用 DirectoryInfo 和 FileInfo 类重命名文件,
//并将重命名后的文件列表显示在 lblReFileList 标签控件中。
DirectoryInfo directoryInfo = new DirectoryInfo(tbPath.Text);
FileInfo[] files = directoryInfo.GetFiles();
string path = string.Empty;
// 循环所有文件
for (int i = 0; i < files.Length; i++)
{
//GetRandomFileName返回随机文件夹或文件名
string randomFileName = Path.GetRandomFileName();
//返回的文件名名称里面有 .
string[] arr = files[i].Name.Split(new char[] { '.' });
//拿到原来的文件后缀名
string oldExt = arr[arr.Length - 1];
//随机后新的文件名
string fileName = randomFileName.Split(new char[] { '.' })[0];
//组合成新的文件名
string newFileName = $"{fileName}.{oldExt}";
//Combine将两个字符串组成一个路径
string destFileName = Path.Combine(tbPath.Text, newFileName);
//重命名
File.Move(files[i].FullName, destFileName);
}
ShowRenamFiles(tbPath.Text);
MessageBox.Show("批量重命名成功!");
}
//显示重命名后的文件列表
private void ShowRenamFiles(string Path)
{
//实例化一个目录信息
DirectoryInfo directoryInfo = new DirectoryInfo(Path);
// 从目录中拿目录下的所有文件
FileInfo[] files = directoryInfo.GetFiles();
// 循环所有文件
foreach (var file in files)
{
// 向重命名后的文件列表中添加文件
lblReFileList.Items.Add(file.FullName);
}
}
//把原文件列表清空
private void btnClearList_Click(object sender, EventArgs e)
{
if (lbFIleList.Items.Count>0)
{
lbFIleList.Items.Clear();
}
}
//打开目录
private void btnOpenML_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(tbPath.Text))
{
MessageBox.Show("请先选择目录!");
return;
}
//Process.Start 打开用户选择的目录。
// Process进程, Start()启动
Process.Start(tbPath.Text);
}
//打开软件目录
private void btnDKRJML_Click(object sender, EventArgs e)
{
//Process.Start 打开应用程序的当前工作目录。
Process.Start(Environment.CurrentDirectory);
}
}