在将 CSV 文件解析为来自 Azure Blob 的流期间,TextFieldParser 始终会立即到达 EndOfData,而无需读取任何数据。相同的代码,但具有相同物理文件的路径而不是流工作。
Dim storageAccount As CloudStorageAccount = CloudStorageAccount.Parse(AzureStorageConnection)
Dim blobClient As CloudBlobClient = storageAccount.CreateCloudBlobClient()
Dim BlobList As IEnumerable(Of CloudBlockBlob) = blobClient.GetContainerReference("containername").ListBlobs().OfType(Of CloudBlockBlob)
For Each blb In BlobList
Dim myList As New List(Of MyBusinessObject)
Using memoryStream = New MemoryStream()
blb.DownloadToStream(memoryStream)
Using Reader As New FileIO.TextFieldParser(memoryStream)
Reader.TextFieldType = FileIO.FieldType.FixedWidth
Reader.SetFieldWidths(2, 9, 10)
Dim currentRow As String()
While Not Reader.EndOfData
Try
currentRow = Reader.ReadFields()
myList.Add(New GsmXFileRow() With {
' code to read currentRow and add elements to myList
})
Catch ex As FileIO.MalformedLineException
End Try
End While
End Using
End Using
Next
我也尝试过转换MemoryStream
为TextReader
Dim myTextReader As TextReader = New StreamReader(memoryStream)
然后传入myTextReader
,TextFieldParser
但这也不起作用。
Using Reader As New FileIO.TextFieldParser(myTextReader)