首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ICSharpCode.SharpZipLib归档意外结束

ICSharpCode.SharpZipLib归档意外结束
EN

Stack Overflow用户
提问于 2018-03-29 06:09:30
回答 1查看 200关注 0票数 0

总之,我试图在一个目录中查找文件,将它们压缩到一个流中,然后将它们放到另一个目录中。在压缩文件中,我得到了意想不到的归档结尾。任何帮助都是最好的。

他们传进来

报表的strReport名称

要搜索的strUser文件夹

strReportNameSearch‘要搜索的文件

代码语言:javascript
复制
Dim strReports() As String
    Dim thefiles As Array
    Dim strZipFileName As String
    Dim dateTimeNow As String = DateTime.Now
    Dim dateOnlyString As String = dateTimeNow.ToString
    Dim buffer As Byte() = New Byte(4095) {}
    Try


        strReports = Split(strReport, "/") 'strReports(0) strReports(1)

            strZipFileName = "xxx.zip"

        Dim outStream As MemoryStream = New MemoryStream()
        Using zipOutputStream As New ZipOutputStream(outStream)
            zipOutputStream.SetLevel(9)
            thefiles = Directory.GetFiles(ConfigurationManager.AppSettings.Get("ReportLookup").ToString() & strUser, strReportNameSearch & "*", SearchOption.TopDirectoryOnly)
            For Each fileName As String In thefiles
                Dim fs As Stream = File.OpenRead(fileName)
                Dim entry As New ZipEntry(Path.GetFileName(fileName))
                entry.Size = fs.Length
                zipOutputStream.PutNextEntry(entry)

                Dim count As Integer = fs.Read(Buffer, 0, Buffer.Length)
                While count > 0
                    zipOutputStream.Write(Buffer, 0, count)
                    count = fs.Read(Buffer, 0, Buffer.Length)
                    If Not Response.IsClientConnected Then
                        Exit While
                    End If
                    Response.Flush()
                End While
                fs.Close()
            Next
            zipOutputStream.Flush()
            outStream.Flush()

            Dim wholezip As String = ConfigurationManager.AppSettings.Get("ReportLookup").ToString() & strReport & "\" & strZipFileName
            If (File.Exists(wholezip)) Then
                File.Delete(wholezip)
            End If
            Using fs As FileStream = New FileStream(wholezip, FileMode.Create)
                'outStream.Seek(0, SeekOrigin.Begin)
                outStream.Position = 0

                outStream.CopyTo(fs)

            End Using
            zipOutputStream.Close()

        End Using
    Catch ex As Exception
        ExceptionManager.Publish(ex)
    End Try
EN

回答 1

Stack Overflow用户

发布于 2018-03-29 23:18:33

在多次试验之后,这个错误起作用了

Using zf As FileStream = New zf(wholezip,FileMode.OpenOrCreate,FileAccess.ReadWrite)‘使用zf作为FileStream =File.Create(整个压缩)’使用zipOutputStream打开压缩流作为新文件(Zf) zipOutputStream.SetLevel(9)‘设置压缩级别’获取文件ZipOutputStream= Directory.GetFiles(ConfigurationManager.AppSettings.Get("ReportLookup").ToString() & strUser,strReportNameSearch & "*",SearchOption.TopDirectoryOnly)‘在文件中循环每个条目的文件作为字符串Dim zentry As ZipEntry = fileName ZipEntry(Path.GetFileName(fileName)) zentry.IsUnicodeText = True zipOutputStream.PutNextEntry(zentry)’字节计数Using streamReader As FileStream = File.OpenRead(fileName) Dim count As Integer = streamReader.Read(buffer,0,buffer.Length)而count >0 zipOutputStream.Write(缓冲区,0,计数) count =streamReader.Read(缓冲区,0,buffer.Length) End While End Using Next End Using End Using

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49544977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档