您的位置:首页 > 编程语言 > C#

C#技术积累(解压tar文件,解析xml,重命名文件,删除文件)

2016-06-15 10:45 387 查看
由于业务需要最近写了个小程序,拿来分享:

先说背景,我呼叫中心系统管理,每周会导出一批录音文件给客户质检。录音是直接从服务器下载拷贝的,一批录音有上千条,而且原始导出的录音有点 ‘二’无法让人摸清来龙去脉。导出来是这样



解压后是这样的,每个录音有一个XML的解释说明文件,文件名和录音文件名一样。这些文件名感觉上是用时间戳堆出来的。



XML的解释说明文件里有callID,来电号码,来电时间等N多信息。客户要求将所有的录音文件压缩一个包,且文件名用来电号码+时间命名,这样方便查看。
背景需求完毕。
分析解决方案:首先tar是Linux下的压缩包,需要解压,而且是批量处理,然后读取xml的文档信息,将来电号码和来电时间提取出来组成新的文件名,然后将原录音文件重新命名,也是批量处理。
分析完毕。

一开始想用Python(最近在学习的,还不熟)解决,放弃;用C++也是二把刀,怕赶不上时间;最后还是用了C#做个简单的小程序吧,毕竟还是熟悉的快一些。

从网上下载了DLL文件‘SharpZipLib.dll’,这里面包含了zip,rar,tar等压缩和解压缩的很多东东,感谢提供这个东东的。

这里的代码网上有很多,随便搜搜可以看到~~~~

解读XML文件的信息,C#的system.xml是很好的东东。
public static recordingInfo GetRecordingInfo(string xmlFileName)
{
recordingInfo rdInfo=new recordingInfo();
string content = string.Empty;
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.Load(xmlFileName); //加载XML文档
XmlNode node = xmlDoc.ChildNodes[1];
//来电时间
rdInfo.STime = node.Attributes["starttime"].Value.Substring(0, 19);
//录音文件名
rdInfo.OldName = node.Attributes["filename"].Value;
//来电号码
rdInfo.ANI = node.ChildNodes[0].ChildNodes[3].ChildNodes[7].InnerText;
}
catch (Exception ex)
{
throw ex; //这里可以定义你自己的异常处理
}
return rdInfo;
}

recordingInfo是我对录音文件的一个类:
public class recordingInfo
{
public string OldName { get; set; }
public string ANI { get; set; }
public string STime { get; set; }
}
然后就是文件重名命后和删除原文件了,先来删除文件的,这个简单:

public bool DeleteFiles(string fileName)
{
if (File.Exists(fileName))
{
File.Delete(fileName);
return true;
}
return false;
}
文件重名命,第一次使用才知道C#的File类没有rename这个方法,简直哭死人啦。网络就是个神奇的东西,你不需要记住,只要会检索,总会在某个地方有你需要的:引用这两个
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.Devices;
下面两句话解决重命名,哈哈哈,你就笑吧,突然想你昨天看到的一句话,“程序员为什么喜欢写代码,因为那是在创造一个生命,给他赋予程序智能~”
Computer MyComputer = new Computer();

MyComputer.FileSystem.RenameFile(FileName, newName);
几个关键点都解决了,剩下的只需要组织代码,将整个逻辑整理得当就OK啦。

整体界面图:






解压后的文件是这样的




完毕,测试几遍可以使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  知识点 C 文件压缩