您的位置:首页 > 其它

【NCRE】回收考生答题文件--文件夹的重命名和删除

2015-12-27 20:09 183 查看

【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;
}


                             未完待续~~下篇介绍文件夹的压缩
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: