C#初体验
C#初体验之一键替换小工具
初入C#,刚学完一些基础语法,设计一个一键替换小工具。
大体功能:①输入旧的和新的关键字;
②选择指定的文件夹路径;
③点击确认修改。
1.创建一个Winform项目,摆放控件,修改控件名字,出现整个工具雏形。

2.整个工具使用方法构思
①输入旧的和新的关键字,不输入关键字不允许选择路径(弹出窗口1提示)
②点击【。。。】按键进行文件夹路径选择;
③点击确认进行修改,修改完成后弹出窗口提示。
3.整个软件控制逻辑实现
1.实现窗口提示1(提醒先选择路径),用户选择完路径后再Textbox中输出。
private void Getpathbutton_Click(object sender, EventArgs e)//选择路径按键事件 { if (Oldtext.Text == "" && Newtext.Text == "") //防止不输入关键字就进行路径选择 { MessageBox.Show("请输入需要修改的关键字");//窗口提示1 } else if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)//检测用户是否点确认 { ChoosePath.Text = folderBrowserDialog1.SelectedPath; //获取用户选择的路径 } }
2.遍历路径中所有的文件并存入LIst泛型集合中,再逐个进行数据操作。
private void ChangeButt_Click(object sender, EventArgs e)//确认按键事件 { _FileInfo fileinfo = new _FileInfo(); List<_FileInfo> fileinfos = new List<_FileInfo>(); string path = (ChoosePath.Text).ToString(); DirectoryInfo dir = new DirectoryInfo(ChoosePath.Text); foreach (var getfile in dir.GetFiles()) //遍历文件夹所有文件 { fileinfo._Filename = getfile.Name; fileinfo._Filepath = ChoosePath.Text; fileinfos.Add(new _FileInfo(getfile.Name, ChoosePath.Text)); FileStream fileread = new FileStream((ChoosePath.Text + "\\" + getfile.Name), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); byte[] olddata = new byte[1024 * 1024 * 25]; byte[] newdata = new byte[1024 * 1024 * 25]; int r = fileread.Read(olddata, 0, olddata.Length); string s = Encoding.Default.GetString(olddata, 0, olddata.Length); //字节流转字符串 string result = s.Replace(Oldtext.Text, Newtext.Text); //替换关键字 newdata = Encoding.Default.GetBytes(result); fileread.Write(newdata, 0, newdata.Length); fileread.Close(); fileread.Dispose(); File.WriteAllText((ChoosePath.Text + "\\" + getfile.Name), string.Empty);//清空文件数据 File.WriteAllBytes((ChoosePath.Text + "\\" + getfile.Name), newdata);//写入新的数据 } MessageBox.Show("修改完成");//窗口提示2 }
参考源码:
百度云: https://pan.baidu.com/s/13B3OQeMfcctA_iza92cpKg 提取码:w8od
PS:刚刚入门的C#小白,虽说winform现在已经落后,WPF更为流行(还在看xaml),作为小白还是更喜欢操作winform。
该代码还有很多可优化的地方,单单是数据操作方面就很粗糙~~~只是实现基本功能自己使用,后续会继续添加别的功能和优化代码。
浙公网安备 33010602011771号