帮助阅读文本文件中的换行符

时间:2009-05-22 17:07:17

标签: vb6 line-breaks

我有一个TXT文件,我需要通过应用程序导入,但由于某种原因,我需要先在wordpad中打开它,然后在导入之前保存它。我猜这与Line Breaks有关。因为如果我先在记事本中打开它,没有换行符,但是如果我用wordpad打开它,那么这些行是分开的。

有谁知道为什么会发生这种情况以及如何避免手动打开文件并使用wordpad保存? 该应用程序是用vb 6编写的(Yikes!)。

感谢您的帮助

3 个答案:

答案 0 :(得分:2)

这是一个行结束问题。您的代码(和记事本)想要查看回车(CR)/换行(LF)对,这可能只是CR(Macintosh)或仅LF(Unix)文件。写字板更宽容,保存显然(尚未测试)为您节省CR / LF对。

您可以在应用程序中更改代码以查找任何结尾并轻松处理它们:只需停止查找vbCrLf作为一对并查找任一行作为行尾。我自己的策略是扫描CR或LF并消耗后面的所有CR / LF字符:这也清除了空白行。

答案 1 :(得分:0)

该文件可能在每行末尾只有一个回车符(CR)或换行符(LF)字符。

在Windows中,每行末尾都需要CR和LF字符。这可以通过使用常量vbCRLF在VB6中轻松完成。

另一方面,如果您是阅读文件的人,您可以确定哪个文件丢失并在阅读文件时手动添加(即使用替换功能将CR转换为CRLF或LF转换为CRLF )。

答案 2 :(得分:0)

除非这些文件非常大并且性能至关重要,否则可以通过ADODB.Stream对象轻松地逐行读取它们。

这不仅可以处理多个行分隔符(Stream.LineSeparator = adCR,adCRLF或adLF),它还可以用于处理包含Unicode(UTF-16),UTF-8,系统代码页ANSI和替代“的文件” ANSI“其他语言环境的编码。

例如,如果您的文本文件包含来自俄语语言环境的“ANSI”,则可以设置Stream.Charset =“koi8-r”并将数据正确翻译为VB6 Unicode(UTF-16):< / p>

Dim Stm As ADODB.Stream
Dim Line As String
Dim Counter As Long
Set Stm = New ADODB.Stream
With Stm
    .Open
    .LoadFromFile "russian.txt"
    .Type = adTypeText
    .Charset = "koi8-r"
    .LineSeparator = adLF
    Do Until .EOS
        Line = .ReadText(adReadLine) 'Text is in Unicode now.
        Counter = Counter + 1
    Loop
    .Close
End With

Charset默认使用值“unicode”(UTF-16),但要使用默认代码页读取或写入ANSI中的流,您可以将其设置为“ascii”。

HKCR \ MIME \ Database \ Charset包含可用值。