我对视觉基础(以及一般编码)都很陌生,所以如果我犯了任何非常简单的错误,请告诉我。
现在,我的vb.net代码遇到了一个非常奇怪的问题。
文件流能够正确地打开文件并从中读取 - 但奇怪的是,虽然代码能够从文件的开头读取一堆行,但是当我在记事本中手动打开文件时,我不是。这是代码:
Dim fs, f, s 'filesystemobject, file, stream.
fs = CreateObject("Scripting.FileSystemObject")
f = fs.GetFile(CurrDataPath) ' This change made to ensure the correct file is opened
s = f.OpenAsTextStream(1, 0) ' 1 = ForReading, 0 = as ASCII (which i think is right?)
Dim param(14) As String
Dim line As String
line = s.ReadLine()
While i <= 14
i += 1
MessageBox.Show(line)
line = s.ReadLine()
End While
(我已经读过阵列是一个坏主意,但它们很方便,并没有给我带来任何问题,所以我一直在使用它们。)
有些奇怪的是,当这个代码运行时,它会(在消息框中)向我显示我想要看到的信息 - 这一点都不错。我想要的信息如下:
BEGINPARAM
parameter1, 0
parameter2, 7.5
ENDPARAM
编辑:
使用Path.GetFullPath(DFile)
后,我发现在不同目录中有两个文件具有相同的名称DFile
。我在记事本中打开的文件保存在我希望保存的目录中,而代码正在读取的文件保存在VB项目的文件夹中。
一旦我将代码更改为依赖于包含预期路径的CurrDataPath
,从文件中读取的代码就完全是我在记事本中所做的。
我确实在记事本中有自动换行功能,所以我知道这不是问题,但是,我会考虑使用记事本++。
名为DFile的文件是在c ++程序中创建的,我将深入研究该文件的一部分,以便将文件的一部分写入不同的文件夹。
显然我错过了一些重要的事情,如果有人能提供帮助,那就太棒了 * 注意:这是一个vb6迁移项目,所以如果有人要求我可以提供旧代码。
答案 0 :(得分:1)
假设最新版本的VB.Net,现代编写方式如下:
For Each line As String In File.ReadLines(CurrDataPath).Take(14)
MessageBox.Show(line)
Next
答案 1 :(得分:0)
我不是100%清楚你说的是什么。此代码中没有任何内容输出到文件,因此您必须说的是,当您在上面第3行打开“DFile”引用的文件时,该文件没有包含“parameter1,0”的行和“parameter2,7.5”在里面?
由于我们知道技术上不可行,请确认上述问题的答案并确保在脚本打开时确实在记事本中打开相同的文件。第二件事是打开记事本中的Word Wrap或下载Notepad ++(我认为每个人都应该拥有的文本编辑器)并确保数据实际上丢失了,而不仅仅是因为它没有使用Windows风格而不显示在屏幕上行尾。