使用for循环加载连续(数字)命名文件

时间:2018-02-18 02:55:26

标签: vb.net for-loop listbox getfiles file.readalllines

我有一个文件夹(" EDI")[版本]里面有.txt文件(01,02,03,04)我有这个功能代码:

ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", "01.txt"))
ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", "02.txt"))
ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", "03.txt"))

直到68.每个文件都包含一个列表歌曲。但是,如果我尝试减少在" For Loop"中实现的代码,则为:

For i = 1 To 70
           ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", (i) & ".txt"))
Next

我在(i) & ".txt"收到错误消息。说:"String cannot be converted in coding" 我怎么解决?一些需要注意的是文本文件的名称是01.txt,02.txt WITH 2 NUMBERS,还有" for-loop"自动将01改为1

或更好......如何在文件夹中加载所有现有文本文件的所有文本行?

如果需要,我已经有了文件列表,我使用这段代码将所有txt文件名转换成另一个ListBox:

Dim newroot As String
newroot = (Application.StartupPath & "\Cat\EDI\")
listbox1.items.AddRange(IO.Directory.GetFiles(newroot, "*.txt").
               Select(Function(f) IO.Path.GetFileNameWithoutExtension(f)))

2 个答案:

答案 0 :(得分:0)

以下使用由字符串前面的$表示的插值字符串。这将在{}

中的整数上为您调用.ToString
Private Sub FileNamesInLoop()
        For i As Integer = 1 To 9
            ListBox1.Items.Add($"0{i}.txt")
        Next
        For i2 As Integer = 10 To 68
            ListBox1.Items.Add($"{i2}.txt")
        Next
End Sub

答案 1 :(得分:0)

您可以使用Integer.ToString(format) overload并指定数字格式5.ToString("00")。这样做总是会为数字添加前导零< 10,即:

  • 05变为9.ToString("00")
  • 09变为23.ToString("00")
  • 23变为For i = 1 To 68 ListBox2.Items.AddRange(File.ReadAllLines(Application.StartupPath & "\Cat\EDI\", i.ToString("00") & ".txt")) Next

以下是您的工作方式:

For i = 1 To 68
    ListBox2.Items.AddRange(File.ReadAllLines(Path.Combine(Application.StartupPath, "Cat", "EDI", i.ToString("00") & ".txt")))
Next

虽然我强烈建议您切换到Path.Combine()而不是自己连接路径,因为这样可以确保所有内容都正确完成:

{{1}}