AI智能
改变未来

C#实现文件复制和过滤(附带源码)


C#实现文件复制和过滤(附带源码)

环境说明:Windows10,VS2015,.NET Framework4.0

一、获取文件夹所有文件

if (!Directory.Exists($\"{AppDomain.CurrentDomain.BaseDirectory}ImportFiles\\\\\"))//获取指定目录下的文件,此时获取的为生成文件下的ImportFiles文件{//如果不存在,结束return;}var importDir = new DirectoryInfo($\"{AppDomain.CurrentDomain.BaseDirectory}ImportFiles\\\\\");var importFiles = importDir.GetFiles(\"*.*\", SearchOption.AllDirectories);//获取所有文件filterFiles(ref importFiles);gridControl1.DataSource = importFiles.ToList();//用的是DX的gridcontrol进行显示

二、过滤不需要的文件

// importfiles为数组, 需要ref传递private void filterFiles(ref FileInfo[] importFiles){//extension 需要查看的文件类型List<string> extension = new List<string>();extension.Add(\".xlsx\");extension.Add(\".xls\");extension.Add(\".txt\");importFiles=importFiles.Where(x => extension.Contains(x.Extension)).ToArray();//过滤不需要的文件FileInfo fileInfo=new FileInfo($\"{AppDomain.CurrentDomain.BaseDirectory}ImportFiles\\\\File.Info\");//过滤文件名的文件if (!fileInfo.Exists){//如果不存在,结束return;}using (var fileReader = fileInfo.OpenText()){var fileData = fileReader.ReadToEnd();fileReader.Close();fileData = fileData.Replace(Environment.NewLine, \"\");var fileList = fileData.Split(new string[] { \";\" ,\";\"}, StringSplitOptions.RemoveEmptyEntries);if (fileList.IsNullOrEmpty()){return;}importFiles.Where(x => !fileList.Contains(x.Name))?.ToList()?.ForEach(item => item.Delete());//删除文件File.Info中不存在的文件}}

三、文件复制和打开

SaveFileDialog savedialog = new SaveFileDialog();//保存对话框savedialog.Filter = \"所有文件|*.*|Excel表格|*.xls;*.xlsx\";savedialog.FilterIndex = 0;savedialog.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录savedialog.CheckPathExists = true;//检查目录savedialog.FileName = focusrow.Name;if (savedialog.ShowDialog() != DialogResult.OK) { return; }focusrow.CopyTo(savedialog.FileName,true);//复制文件,focusrow为gridcontrol的点击项Process.Start(new ProcessStartInfo()//调用进程打开复制的文件{FileName = savedialog.FileName});

四、一些细节

1.前端显示界面

2.gridcontrol的事件
3.FileInfo文件内容和配置

我是小赖,一个学习C#的混子。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » C#实现文件复制和过滤(附带源码)