使用ICSharpCode.SharpZipLib插件进行解压,并转换为二维数组
string postSt = "";
using(MemoryStream fms - new MemoryStream(byte[] file)){
using(ZipInputStream zis = new ZipInputStream(fms)){
ZipEntry theEntry; // 相当于将其实例化的操作
//虽然是循环,但其实是一次性全部读取
while((theEntry = zis.GetNextEntry()) != null){
//这里在定义byte数组大小的时候,网上大多数写的是1024,或者是1024*1024.。。。
//但其实如果不确定文件流的大小是多少,还要定义成死值的话,解析出来的文件特别容易出问题,可能解析出的文件不完整
byte[] data = new byte[theEntry.Size];
zis.Read(data, 0, data.Length);
// 这里进行转码的时候不知道为啥后面会出现很多\0...只能手动将其去掉
String dateStr = Encoding.UTF8.GetString(data).TrimEnd('\0');
postSt = postSt + dateSt;
}
}
}
postSt = postSt.Replace("\r\n", ",").TrimEnd(',');
string[,] myArr;
string[] strCol = postSt.Split(',');
myArr = new string[strCol.Length,2];
for (int k=0; k<=strCol.Length-1; k++) {
string[] strRow = strCol[k].Split('|');
myArr[k,0] = strRow[0];
myArr[k,1] = strRow[1];
}