doNet Core中解压zip

本文介绍了如何在DotNetCore4.0中使用ZipInputStream类进行文件解压缩,包括创建ZipHelper类的方法UnZip,以及在页面上传并解压后读取特定文件的操作。

doNet Core4.0解压zip文件

1、ZipInputStream.cs
public class ZipHelper
{
///
/// 解压缩一个 zip 文件。
///
/// The ziped file.
/// The STR directory.
/// 是否覆盖已存在的文件。
public static void UnZip(string zipedFile, string strDirectory, bool overWrite)
{
if (strDirectory == “”)
strDirectory = Directory.GetCurrentDirectory();
if (!strDirectory.EndsWith(“\”))
strDirectory = strDirectory + “\”;
using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipedFile)))
{
ZipEntry theEntry;
while ((theEntry = s.GetNextEntry()) != null)
{
string directoryName = “”;
string pathToZip = “”;
pathToZip = theEntry.Name;
if (pathToZip != “”)
directoryName = Path.GetDirectoryName(pathToZip) + “\”;
string fileName = Path.GetFileName(pathToZip);
Directory.CreateDirectory(strDirectory + directoryName);

if (fileName != “”)
{
if ((File.Exists(strDirectory + directoryName + fileName) && overWrite) || (!File.Exists(strDirectory + directoryName + fileName)))
{
using (FileStream streamWriter = File.Create(strDirectory + directoryName + fileName))
{
int size = 2048;
byte[] data = new byte[2048];
while (true)
{
size = s.Read(data, 0, data.Length);
if (size > 0)
streamWriter.Write(data, 0, size);
else
break;
}
streamWriter.Close();
}
}
}
}
s.Close();
}
}

}
2、在页面里上传压缩包后解压后读取
private string zipDir;
private string excelFile = “”;

    public void ReadZip(string zipFile)
    {
        string zipFileName = Path.GetFileNameWithoutExtension(zipFile);
        zipDir = Path.GetDirectoryName(zipFile);
        ZipHelper.UnZip(zipFile, Path.GetDirectoryName(zipFile),  true);

        if (string.IsNullOrEmpty(zipDir))
            return;
        string[] files = Directory.GetFiles(zipDir);
        foreach (string file in files)
        {
            string fileName = Path.GetFileNameWithoutExtension(file);
            if (string.Compare(fileName, "DATAORDER_DATA", true) == 0)
            {
                excelFile = file;
            }
        }
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值