您好,登錄后才能下訂單哦!
由于業務需要最近寫了個小程序,拿來分享:
先說背景,我呼叫中心系統管理,每周會導出一批錄音文件給客戶質檢。錄音是直接從服務器下載拷貝的,一批錄音有上千條,而且原始導出的錄音有點 ‘二’無法讓人摸清來龍去脈。導出來是這樣
解壓后是這樣的,每個錄音有一個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啦。
整體界面圖:
解壓后的文件是這樣的
完畢,測試幾遍可以使用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。