【发布时间】:2018-03-28 22:09:30
【问题描述】:
所有, 我正在尝试在目录中查找文件,将它们压缩到流中,然后将它们放在另一个目录中。在压缩文件中,但我意外地结束了存档。任何帮助都会很棒。
他们进来
strReport '报告名称
strUser '要搜索的文件夹
strReportNameSearch '要搜索的文件
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
【问题讨论】:
标签: zip filestream memorystream