我需要一些结构性的帮助!我知道如何得到我需要做的但我无法通过循环解读如何做到这一点。
所以我在文本文件中有一个ID数据库。它们由线分开以便于阅读。我需要读取ID,根据该ID下载文件和日期范围的日期。我理解如何使用streamreader读取该行,并且可以使用1个ID和日期对1个文件做得很好,我的代码工作正常。
我想到了使用Do While循环,但很快意识到我可以下载每个日期的单个ID,我无法循环回到下一个ID并执行相同的操作(或者我可以和我只是不知道怎么样... ...
下载基于DateTimePicker2值。所以基本上这需要从ftp://ftp.address.net/UserID/yyyyMMdd.txt下载文件。
很抱歉收回解决方案,但此代码读取第1行,尝试下载文件然后停止。
For Each strUserID As String In System.IO.File.ReadAllLines("database.txt")
Dim myDate As DateTime = DateTimePicker2.Value
Do While myDate < DateTimePicker3.Value
Dim ftpAddr As String = "ftp://ftp.address.net/" & strUserID & myDate.ToString("yyyyMMdd") & ".txt"
Dim myPath As String = "MyFolder'" & strUserID & myDate.ToString("yyyyMMdd") & ".txt" 'or whatever the path should be
Try
My.Computer.Network.Download(ftpAddr, myPath)
Catch nullDownload as IO.IOException
Continue For
End Try
If My.Computer.FileSystem.Exists(myPath)
For Each line as String In System.IO.File.ReadAllLines(myPath)
DataGridView1.Rows.Add(line.Split(","))
Next
End If
myDate.AddDays(1)
Loop
Next
我基本上需要使用database.txt中的下一行重新循环。
编辑:我正在尝试做的快速摘要:
从database.txt中的第1行开始读取ID
1A。根据DateTimePicker2值(ftp://ftp.address.net/userID/yyyyMMdd.txt)下载文件
1B。将其写入DataGridView
1C。将1添加到日期并从步骤1a重复,重复直到DateTimePicker2&gt; DateTimePicker3
读取database.txt中的下一个ID并循环执行步骤1a-1c,但是从初始选择的日期开始。
答案 0 :(得分:2)
你需要两个循环。一个用于处理每个UserID的外部循环,以及一个内部循环,该进程都与该UserID一起约会。
如果每个UserID是文本文件中的单独行,则可以使用File.ReadAllLines
将它们读入数组并使用For Each
循环来处理每个UserID。然后确保每次选择新的UserID时,将日期设置回初始日期。
For Each strUserID As String In System.IO.File.ReadAllLines("database.txt")
Dim myDate As DateTime = DateTimePicker2.Value
Do While myDate < DateTimePicker3.Value
Dim ftpAddr As String = "ftp://ftp.address.net/" & strUserID & myDate.ToString("yyyyMMdd") & ".txt"
Dim myPath As String = "MyFolder'" & strUserID & myDate.ToString("yyyyMMdd") & ".txt" 'or whatever the path should be
Try
My.Computer.Network.Download(ftpAddr, myPath)
Catch nullDownload as exception
End Try
If My.Computer.FileSystem.Exists(myPath)
For Each line as String In System.IO.File.ReadAllLines(myPath)
DataGridView1.Rows.Add(line.Split(","))
Next
End If
myDate.AddDays(1)
Loop
Next
[编辑] 我编辑了代码以匹配问题的编辑版本。要下载的文件的名称基于UserID和日期。