解压缩时,GZipstream会切断原始文件中的数据

时间:2014-01-15 13:36:42

标签: vb.net visual-studio-2010 gzipstream

很长一段时间以来,我一直在尝试调试为什么我的解析计数在下载要解析的文件时被关闭,并且看起来真的很愚蠢。我做了一些调试,发现我在尝试使用GZipStream解压缩时下载的文件显示它错过了原始文件中的数据。这是我的解压缩代码:

Using originalFileStream As FileStream = fileItem.OpenRead()
            Dim currentFileName As String = fileItem.FullName
            Dim newFileName = currentFileName.Remove(currentFileName.Length - fileItem.Extension.Length)
            newFile = newFileName
            Using decompressedFileStream As FileStream = File.Create(newFileName)
                Using decompressionStream As GZipStream = New GZipStream(originalFileStream, CompressionMode.Decompress)
                    decompressionStream.CopyTo(decompressedFileStream)
                    Console.WriteLine("Decompressed: {0}", fileItem.Name)
                    decompressionStream.Close()
                    originalFileStream.Close()
                End Using
            End Using
        End Using

现在我要做的是将newfile返回给调用函数并从那里读取内容:

  Dim responseData As String = inputFile.ReadToEnd

现在将浏览器中的URL粘贴并从那里下载然后使用winrar打开我可以看到数据不一样。现在这不会一直发生,因为有些文件正确解析和解压缩。每个下载的文件都有一个检查计数器,用于比较我应该从中解析的帖子数量,这会让我看到计数不匹配。

修改

这是我发现的另外一个。如果我通过单独的行读取问题文件(正如我所说,只有一些文件以这种方式发生),我将获得所有数据:

                Dim rData As String = inputFile.ReadLine
                If Not rData = "" Then
                    While Not inputFile.EndOfStream
                        rData = inputFile.ReadLine + vbNewLine + rData
                    End While
                    getIndividualPosts(rData)
                End If

现在,如果我尝试从没有问题的文件中读取单独的行,它将不返回任何内容,因此我将不得不readtoEnd。任何人都可以解释这种奇怪的行为,它是否与GZIPSTREAM或我的代码中的某些错误有关。

0 个答案:

没有答案