C#自学之旅 第一周-习题
程序员文章站
2022-04-10 20:56:57
...
代码结构
LibraryClass 是按照题目要求建造的一个类库 这是个Class Library Project,里面包含多个个可被其他Project调用的方法:
CmdClass 这是个Console App Project(命令行),它可以接受用户输入,然后调用Project#1中的那个方法,
下面是实施效果图,因为系统是日文系统所以打的中文乱码了。不过不影响
接下来放代码
/*
* Created by SharpDevelop.
* User: wanglin
* Date: 2020/3/2
* Time: 11:10
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.IO;
using System.Collections.Generic;
namespace LibraryClass
{
public class ComeUseMe
{
/*
* 获取路径下所有文件名称
* string path 文件路径
*/
public List<String> getFileName(string path)
{
List<String> strlist = new List<String>();
DirectoryInfo root = new DirectoryInfo(path);
foreach(FileInfo f in root.GetFiles())
{
Console.WriteLine("原始数据:"+f.Name);
strlist.Add(f.Name);
}
return strlist;
}
/*
* 写入文件
* string path 文件路径
*/
public void WriteFile(String path,String message)
{
//fs 创建文件 sw文件写入流
FileStream fs = File.Open(path, FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(message); //这里是写入的内容
sw.Close();
fs.Close();
}
/*
* 寻找条件
* string path 文件路径
*/
public void FindFile(List<String> lists,String filepathname,String ipea)
{
List<String> Test = new List<string>();
foreach (var temp in lists)
{
//该方法时判断最开始的字符是否满足条件
if(temp.StartsWith(ipea)){
Test.Add(temp);
}
}
Console.WriteLine("查找完毕,以下为满足条件的数据");
Console.WriteLine("在该路径下,有前十个文件数据 D:\\C#\\Text.txt");
int i = 0;
foreach (var temp in Test)
{
if(i<10)
{
i++;
Console.WriteLine(temp);
WriteFile(filepathname,temp);
}
}
}
}
}
/*
* 由SharpDevelop创建。
* 用户: wanglin
* 日期: 2020/3/2
* 时间: 11:11
*
* 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
*/
using System;
using LibraryClass;
using System.IO;
using System.Collections.Generic;
namespace CmdClass
{
class Program
{
public static void Main(string[] args)
{
String filepathname = "D:\\C#\\Text.txt";
ComeUseMe comeuseme = new ComeUseMe();
Console.WriteLine("按回车键开始输入");
Console.ReadKey(true);
Console.WriteLine("开始匹配数据,请输入你的查找条件");
//取得用户的输入命令
String ipea = Console.ReadLine();
Console.WriteLine("按回车键继续输入你所需要查找的文件夹路径");
Console.WriteLine("格式如下:D:\\20200103_091510");
Console.WriteLine("输入完后请按回车");
String path = Console.ReadLine();
List<String> lists = comeuseme.getFileName(path);
comeuseme.FindFile(lists,filepathname,ipea);
Console.Write("欢迎使用,按回车退出");
Console.ReadKey(true);
}
}
}
第二个是主函数,执行它得到效果图,初学,有许多bug,仅供自己以后参考
完成这个功能后,研究它的进阶要求用图形化界面完成
于是有了下面的这个升级版 但是由于对C#的不熟悉,代码也有很多的冗余
一样的,直接贴代码,自我感觉很冗余,但是也不清楚图形界面代码怎么分割
/*
* 由SharpDevelop创建。
* 用户: wanglin
* 日期: 2020/3/4
* 时间: 11:44
*
* 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
*/
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
namespace WindowsForm
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
void Button1Click(object sender, EventArgs e)
{
String a = "";
OpenFileDialog OFD = new OpenFileDialog();
OFD.InitialDirectory = "E:";
OFD.Filter = "所有文件(*.*)|*.*";
OFD.RestoreDirectory = true;
OFD.FilterIndex = 1;
DialogResult dresult= OFD.ShowDialog();
if(dresult == DialogResult.OK){
a = OFD.FileName;
textBox1.Text = a.Substring(0, a.LastIndexOf("\\")) ;
}
else
{
MessageBox.Show("未选择文件夹");
}
}
void Button2Click(object sender, EventArgs e)
{
if(textBox1.Text.Contains(":") && textBox2.Text!=null){
String path = textBox1.Text;
String ipea = textBox2.Text;
FileInfo fi = new FileInfo("D:\\C1#\\Text.txt");
var di = fi.Directory;
if (!di.Exists)
di.Create();
FileStream fs = File.Open("D:\\C1#\\Text.txt", FileMode.Append);
StreamWriter sw = new StreamWriter(fs);
List<String> strlist = new List<String>();
DirectoryInfo root = new DirectoryInfo(path);
foreach(FileInfo f in root.GetFiles())
{
strlist.Add(f.Name);
}
List<String> Test = new List<string>();
foreach (var temp in strlist)
{
if(temp.StartsWith(ipea)){
Test.Add(temp);
}
}
int i = 0;
String data1 = "";
foreach (var temp in Test)
{
if(i<10)
{
i++;
data1 = data1 + temp + "\r\n";
sw.WriteLine(temp);
}
}
textBox3.Text = data1;
MessageBox.Show("结果已经出到D:\\C#\\Text.txt 文件里");
sw.WriteLine(""); //这里是写入的内容
sw.Close();
fs.Close();
}
else
{
MessageBox.Show("请先点击上放浏览,选择文件路径,并输入你的排查条件");
}
}
void TextBox2TextChanged(object sender, EventArgs e)
{
}
void TextBox3TextChanged(object sender, EventArgs e)
{
}
}
}
控件都是自己拖出来的
上一篇: app常见性能测试点
下一篇: 登录测试点——脑图
推荐阅读