【NCRE需求】
要求对所有考生的答题文件进行回收,方便考生核查分数。
由于一级考试做题的时候,都是在本地进行的,是对一些文件,文件夹以及浏览器进行的操作,所以如果有核查分数的这个需求,我们就必须要将“计算机一级考生文件夹”里的所有内容进行回收。
【技术点】
一、文件夹的重命名以及文件夹删除功能
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);
2、为什么要删除文件和文件夹?
一台电脑要进行考多次,不能每次考完一场重启一次电脑吧。所以,我们每次交卷上传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;
}
未完待续~~下篇介绍文件夹的压缩