0

我需要阅读存储在一个文件夹中的多个文件。当我阅读每个文件时,我需要删除管道前后的所有空格。我使用正则表达式删除了大部分空白,但当字段为空时,管道之间留有一个空格。使用此代码,我可以读取硬编码的文件名(一个)。如何更改它以读取目录(文件夹)中的所有文件?

 Dim fileEntries As String() = Directory.GetFiles("C:\Documents and Settings\Desktop\files\")
    For Each fileName As String In fileEntries
        Dim FileReader As StreamReader
        FileReader = New StreamReader(fileName)
        Dim FileWriter As StreamWriter
         '***The following code doesn't work.
        'FileWriter = New StreamWriter("C:\Documents and Settings\Desktop\NewFiles" & fileName & "done.txt")  
        While (FileReader.Peek <> -1)
            Dim str As String = FileReader.ReadLine()
            str = System.Text.RegularExpressions.Regex.Replace(str, "\s{2,}", "")
            FileWriter.WriteLine(str)
        End While
        FileWriter.Close()
    Next
4

1 回答 1

1

使用GetFiles方法。它返回字符串数组,您可以使用 for/foreach 遍历每个文件名

Dim fileEntries As String() = Directory.GetFiles("C:\Documents and Settings\Desktop\files\")
For Each fileName As String In fileEntries
    FileReader = New StreamReader(fileName)
...
Next

编辑

使用 ReadAllLinesand 和 WriteAllLines 仍然更容易

Dim files As String() = Directory.GetFiles("C:\Documents and Settings\Desktop\files\")
For Each f As String In files
    Dim lines As String() = File.ReadAllLines(f)

    For i As Integer = 0 To lines.Length - 1
        lines(i) = System.Text.RegularExpressions.Regex.Replace(lines(i), "\s{2,}", "")
    Next

    File.WriteAllLines(f, lines)
Next
于 2013-10-14T19:08:52.090 回答