.net - 通过 TextFieldParser 类收集行偏移量(以字节为单位)
问题描述
要快速导航到 CSV 文件中的某些行,我需要记住它们在给定文件中的位置(以字节为单位)。我正在使用TextFieldParser
类。使用TextFieldParser
我想处理文件中的数据,并且我还想记住某些行的字节偏移量。这可能吗?
我对 Position 方法返回的数据感到困惑,因为当TextFieldParser.ReadLine
方法在文件中前进时,Position
方法返回相同的值 (5120),直到第 62 行。
Dim FStream As FileStream = File.Open("p.csv", FileMode.Open)
' My plan is to pass to this methond some offset in bytes from
' beginning of file so when csvReader.ReadLine() is called it reads
' needed line.
'FStream.Seek(5120, SeekOrigin.Begin)
Using csvReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(FStream, System.Text.Encoding.GetEncoding(1251))
csvReader.TextFieldType = FileIO.FieldType.Delimited
csvReader.SetDelimiters(";")
csvReader.HasFieldsEnclosedInQuotes = False
csvReader.TrimWhiteSpace = True
While csvReader.LineNumber < 100
Try
Dim aa = csvReader.ReadLine()
Console.WriteLine(aa)
Console.WriteLine("Line number {0}. Position: {1}", csvReader.LineNumber, FStream.Position())
Catch ex As Exception
End Try
End While
outputFile.Close()
End Using
这是输出:
1
storage_code;article;brand;description;delivery_time;count_text;miltiplity_;price
Line number 2. Position: 5120
Bella333;SLHGO038;NAMDO;"ODL mdiriuo fofofof";0/2;2;1;.59,10
... It prints «Position: 512» until line 62 when it outputs «Position: 9216»...
解决方案
推荐阅读
- amazon-web-services - 在 AWS ECS 中设置 ulimit:HardLimit 不能为空
- python - 如何为多列定义变量
- sql - SQL Server 中列值的每行总计
- python - 我收到此代码错误,请任何人纠正并解释我的错误
- vue.js - 无法通过 npm 链接使用 Vue 组件库
- python - 骰子游戏得分和开始不起作用
- reactjs - 通过不更新状态的道具将功能从父组件传递到子组件来关闭 react-bootstrap 弹出模式
- python - 尝试使用 BeautifulSoup 打印表格的单行,但行位置不断变化
- java - 在 Eclipse 中播放视频效果很好,但是当将 java 项目导出为可运行的 JAR 文件时,它不再工作了
- c# - 如何生成具有正确命名空间前缀的 SOAP 兼容 XML 响应?