最近有一项需求,将电测试点数后台批量写入到工程系统流程指示中,而电测试文件存在压缩包中,压缩包存在公共网络盘
示例图:
一.采用原始方法(4步完成):
第1步:.网络盘ZIP拷到本地,
第2步:解压ZIP到文件夹
第3步:读取文件夹内容并处理
第4步:删除文件夹与ZIP
二.采用新的方法:(1步完成)
第1步:.读取ZIP内容并处理
小结:没有对比就没有伤害,简直完美秒杀以前的作法,应用用于当我们只需读取一个ZIP压缩包中指定文件时,可以采用此方法实现。
三.如何实现呢?
引用2个文件,需.net4.5才支持(在巨人的肩膀太给力了,感谢微软)
System.IO.Compression.FileSystem.dll
System.IO.Compression.dll
代码示例:
private string readZip()
{
string line = "";
string file = @"F:\4V2TT0B1A0.zip";
using (ZipArchive archive = ZipFile.OpenRead(file))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
if (entry.FullName.EndsWith("profile.cmb"))
{
Stream st = entry.Open();
byte[] byData = new byte[entry.Length];
st.Read(byData, , byData.Length);
line = System.Text.Encoding.Default.GetString(byData); //纯英文读取
//line = System.Text.Encoding.UTF8.GetString(byData); //含中文读取
st.Close();
}
}
}
return line;
}