很长一段时间以来,我一直在尝试调试为什么我的解析计数在下载要解析的文件时被关闭,并且看起来真的很愚蠢。我做了一些调试,发现我在尝试使用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或我的代码中的某些错误有关。