要求对所有考生的答题文件进行回收,方便考生核查分数。
由于一级考试做题的时候,都是在本地进行的,是对一些文件,文件夹以及浏览器进行的操作,所以如果有核查分数的这个需求,我们就必须要将“计算机一级考生文件夹”里的所有内容进行回收。
1、为什么要重命名?
考生登陆时下载的都是“计算机一级考生文件”这个文件夹,如果将答题记录全以“计算机一级考生文件”命名的话,不能给区分是哪个学生的答题文件,而且每个考生都可以考多次试,所以也不能以学号对文件夹命名,最后决定以学号+时间戳进行命名。
第一步,将时间戳转换格式
我们常用的时间基本上都是2015-12-27,或者2015/12/27这种格式的,现在要将其转换为纯数字的。
两种转换方式:
(1)日期格式转换
string s =string.Format("{0:yyyyMMddHHmmssfff}", time);
(2)正则表达式选取数字
string s = Regex.Replace(time,@"[^\d]*", "");
第二步,拼接新文件夹名
原路径为:"D:\计算机一级考生文件"
新路径为:"D:\"+ studentID + "-" + s
第三步,文件夹重命名
两种重命名方式:
(1)此种方法还没有进行多次测试,是否可以百分百成功重命名。
if (Directory.Exists(@"D:\计算机一级考生文件")) { DirectoryInfo folder = newDirectoryInfo(@"D:\计算机一级考生文件"); folder.MoveTo(@"D:\" + studentID + "-" + s); } else { MessageBox.Show("重命名文件夹失败!"); }
(2)这种简单方便,但是经常出问题,会出现路径拒绝访问的问题。
Directory.Move(@"D:\计算机一级考生文件", @"D:\" +studentID + "-" + s);
一台电脑要进行考多次,不能每次考完一场重启一次电脑吧。所以,我们每次交卷上传Mongo成功后就要将本地的文件夹进行删除。
(1)删除文件
File.Delete(@"D:\" + studentID +"-" + s + @".zip");
(2)删除文件夹方法
public static BooleanDeleteDirectory(string path) { Boolean flag = false; DirectoryInfo dir = newDirectoryInfo(path); if (dir.Exists) { DirectoryInfo[] childs =dir.GetDirectories(); foreach (DirectoryInfo child inchilds) { child.Delete(true); } dir.Delete(true); flag = true; } return flag; }
未完待续~~下篇介绍文件夹的压缩