【问题标题】:Cannot Parse Every Line of .Txt File produced with Linux无法解析 Linux 生成的每一行 .Txt 文件
【发布时间】:2014-04-02 01:24:07
【问题描述】:

我有一个超过 100000 行的文本文件。当我尝试使用以下代码浏览文件的所有行时

 Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(txtName)

我数了一下,我只看到我读取了文件的 90000 行。

我应该注意到我确实从 Linux 机器上得到了这个文件。如果这有帮助的话 编辑:更完整的代码

For Each txtName As String In Directory.EnumerateFiles(mydocpath, "*.log")
    Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser(txtName)
         MyReader.TextFieldType = FileIO.FieldType.Delimited
            MyReader.SetDelimiters(" ")
            Dim currentRow As String()
            While Not MyReader.EndOfData
                currentRow = MyReader.ReadFields()
                Console.WriteLine(currentRow.Length)
                LineCount +=1
            End While
    End Using
Next

我应该提到的是总是错过同一行,当我将这些行移动到另一个文件时,它可以很好地读取它们,但是当我在记事本 ++ 中查看所有特殊字符时,我找不到任何不寻常的东西它无法读取的行或它们上面的行

【问题讨论】:

  • 如果您的问题是关于读取文本文件的问题,您应该展示用于读取文本文件的代码。
  • 我认为您需要对“发生的事情”部分进行一些扩展。
  • 文本文件从何而来?如果它来自 Unix 或 Linux 机器,它可能还有其他问题,例如不同的行尾。
  • @Jon Limjap 我所知道的是它是从一台 unix 机器上转移的,可能是 unbuntu 而不使用 samba 共享。我可以毫无问题地打开和读取文件。我可以将我知道我没有读取的行复制到其他文件并成功读取它们
  • 我怀疑 Notepad++ 可能没有像 .net 那样解析换行符。对线条进行目视检查,看看其中一些是否不符合您的预期。

标签: vb.net text-parsing


【解决方案1】:

不确定您在问什么,但如果我是正确的,您似乎想获取文件中的行数...

Public Class Form1

 Private strFile As String = "LOCATION OF FILE"


Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Dim wFile As StreamReader
    wFile = New StreamReader(strFile, FileMode.Open)
    Dim count As Integer = 0 'Counter for rows that have something in it
    Dim totalLines As Integer = 0 'Counter for the total lines in the file
    Dim blankLines As Integer = 0 'Counter for the empty lines (optional)

    While (wFile.Peek <> -1)
        If wFile.ReadLine() = String.Empty Then
            blankLines += 1 ' Add to blank line count
        Else
            count += 1 'Add to actual count data from a line
        End If
        totalLines += 1 'The actual total of lines
    End While

    wFile.Close()
 End Sub
End Class

这是我阅读的文本文件结果的屏幕截图...

另一方面,当这个文件在 Notepad++ 中加载时,我得到了相同的结果...

【讨论】:

  • 是的,这个问题更多的是让行数与他们不匹配的方式相匹配,但感谢您提交此解决方案
  • 我发现了你的问题,提供的解决方案效果很好......我实际上正在处理你发布的修复,但你想要一个行数,我给你的......
  • 这很好用,虽然我仍然不知道我的代码是如何跳行的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 2016-05-15
  • 1970-01-01
  • 2012-01-16
相关资源
最近更新 更多