温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • C#技术积累(解压tar文件,解析xml,重命名文件,删除文件)

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

发布时间:2020-07-24 00:38:36 来源:网络 阅读:1086 作者:wuqiang265 栏目:开发技术

由于业务需要最近写了个小程序,拿来分享:


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

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

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

C#技术积累(解压tar文件,解析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#技术积累(解压tar文件,解析xml,重命名文件,删除文件)

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

解压后的文件是这样的

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

完毕,测试几遍可以使用。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI