如何在asp.net中生成zip文件

如何在asp.net中生成zip文件,asp.net,Asp.net,我正在使用.NETFramework2.0。我需要从文件夹路径“D:\Nagaraj\New Project Read Document\TCBILPOS\TCBILPOS\TCBILPOS\FileBuild\HOST”中创建zip文件…在该主机文件夹中有7个txt文件。因此,现在我想在同一文件夹路径“D:\Nagaraj\New Project Read Document\TCBILPOS\TCBILPOS\TCBILPOS\FileBuild”中创建zip文件“HOST.zip”……提前感

我正在使用.NETFramework2.0。我需要从文件夹路径“D:\Nagaraj\New Project Read Document\TCBILPOS\TCBILPOS\TCBILPOS\FileBuild\HOST”中创建zip文件…在该主机文件夹中有7个txt文件。因此,现在我想在同一文件夹路径“D:\Nagaraj\New Project Read Document\TCBILPOS\TCBILPOS\TCBILPOS\FileBuild”中创建zip文件“HOST.zip”……提前感谢


您可以选择使用第三方库,也可以使用J#(其中包含压缩功能以保持与Java库的兼容性)。该链接中包含完整的源代码。

有大量,但就我个人而言,我通常使用适当的命令行开关启动进程。

无需使用第三方。。我们可以通过将J#库与C#结合使用来实现这一点。 只需添加对vjslib.dll的引用并添加这些名称空间

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using java.io;
using java.util.zip;
using System.IO;
using System.Text
现在,j#和C#的混合出现在画面中。类
FileOutputStream
zipoutpstream
FileInputStream
ZipEntry
是在压缩中起重要作用的j类

StringBuilder sb = new StringBuilder();
    string ZipFileName = String.Format(@"C:\ZippedFolders\({0}).MyZip.zip",DateTime.Now.ToString("yyyyMMdd"));
    string theDirectory = @"C:\Sarat";

    try
    {
        sb.Append(String.Format("Directory To Zip: {0}.<br/>", theDirectory));
        sb.Append(String.Format("Zip file: {0}.<br/>", ZipFileName));

        string[] allFiles = Directory.GetFiles(theDirectory, "*.*", SearchOption.AllDirectories);

        if (System.IO.File.Exists(ZipFileName))
        {
            System.IO.File.Delete(ZipFileName);
            sb.Append(String.Format("Deleted old Zip file: {0}.<br/>", ZipFileName));
        }


        FileOutputStream fos = new FileOutputStream(ZipFileName);
        ZipOutputStream zos = new ZipOutputStream(fos);
        zos.setLevel(9);

        for (int i = 0; i < allFiles.Length; i++ )
        {
            string sourceFile = allFiles[i];

            FileInputStream fis = new FileInputStream(sourceFile);

            ZipEntry ze = new ZipEntry(sourceFile.Replace(theDirectory + @"\", ""));
            zos.putNextEntry(ze);

            sbyte[] buffer = new sbyte[1024];
            int len;

            while ((len = fis.read(buffer)) >= 0)
            {
                zos.write(buffer, 0, len);
            }

            fis.close();
        }

        zos.closeEntry();
        zos.close();
        fos.close();

        sb.Append(String.Format("Folder {0} Zipped successfuly to File {1}.<br/>", theDirectory, ZipFileName));


    }
    catch (Exception eX)
    {
        sb.Append(String.Format("Error zipping folder {0}. Details: {1}. Stack Trace: {2}.<br/>", theDirectory, eX.Message, eX.StackTrace));
    }
StringBuilder sb=新建StringBuilder();
string ZipFileName=string.Format(@“C:\ZippedFolders\({0}).MyZip.zip”,DateTime.Now.ToString(“yyyyMMdd”);
string theDirectory=@“C:\Sarat”;
尝试
{
Append(String.Format(“目录到Zip:{0}.
”,theDirectory)); sb.Append(String.Format(“Zip文件:{0}.
”,ZipFileName)); 字符串[]allFiles=Directory.GetFiles(目录“***”,SearchOption.AllDirectories); if(System.IO.File.Exists(ZipFileName)) { System.IO.File.Delete(ZipFileName); sb.Append(String.Format(“删除的旧Zip文件:{0}.
”,ZipFileName)); } FileOutputStream fos=新的FileOutputStream(ZipFileName); ZipoutStream zos=新ZipoutStream(fos); zos.setLevel(9); for(int i=0;i=0) { 写入(缓冲区,0,len); } fis.close(); } zos.closeEntry(); zos.close(); fos.close(); sb.Append(String.Format(“文件夹{0}成功压缩到文件{1}.
”,目录,ZipFileName)); } 捕获(例外情况除外) { sb.Append(String.Format(“压缩文件夹{0}时出错。详细信息:{1}。堆栈跟踪:{2}.
”,目录,例如Message,例如StackTrace)); }
这可能会对您有所帮助。副本