我正在从FTP服务器读取文件,我正在尝试使用1144 679.5999998
1144 679.600001
1143.75 679.6000003
1143.75 679.5999993
1143 679.6000009
循环将下一行分配给while
并检查它是否为空({{1 }})。
问题是我已经习惯String
了,这是我第一次尝试Nothing
。你能告诉我,如果我做错了导致它吗?
C#
我在VB
中测试了相同的代码并且它完美无缺,我不知道为什么它在Dim request As WebClient = New WebClient()
Dim url As String = "ftp://ftp.harelwebs.net/" + "Default.aspx"
request.Credentials = New NetworkCredential("USERNAME", "PASS")
Try
Dim stream As IO.Stream = request.OpenRead(url)
Dim sr As StreamReader = New StreamReader(stream)
Dim line As String = Nothing
While (stream.CanRead And (line = sr.ReadLine()) <> Nothing)
MessageBox.Show(line)
End While
stream.Close()
sr.Close()
Catch ex As WebException
MessageBox.Show("Error.. " + ex.Message)
中不起作用。
答案 0 :(得分:2)
不幸的是,您无法在测试子句中的VB.NET中分配值。原因是=
用于分配和比较,在案例中会非常混乱和含糊不清。
解决问题的方法就是:
Dim line As String = sr.ReadLine()
While (stream.CanRead And line <> Nothing)
MessageBox.Show(line)
line = sr.ReadLine()
End While
如果有可能存在要将line
值设置为Nothing
以阻止循环运行的实例,则可以在if语句中包装赋值。