1.关于本文
本文中实现了两个函数:统计一个文件夹中所有符合扩展名规则的文件文字行数;统计一个文件中的文字行数
2.函数代码
''' <summary>
''' 统计一个文件夹中所有符合扩展名规则的文件文字行数
''' </summary>
''' <param name="folder">文件夹地址</param>
''' <param name="extensions">扩展名,如过有多个则中间用逗号隔开</param>
''' <param name="countBlankLine">true:空行计算在内 false:空行不计算在内</param>
''' <returns>文字行数统计</returns>
''' <remarks></remarks>
Public Function CheckFolder(ByVal folder As String, _
Optional ByVal extensions As String = "", _
Optional ByVal countBlankLine As Boolean = False) As Integer
'行数统计
Dim lines As Integer = 0
'全部需要统计行数的扩展名
Dim arrayExts() As String = extensions.Split(",")
'文件信息
Dim dif As New System.IO.DirectoryInfo(folder)
'遍历各个子文件夹
For Each di As IO.DirectoryInfo In dif.GetDirectories
lines += CheckFolder(di.FullName, extensions, countBlankLine)
Next
'输出本目录下所有文件
For Each f As System.IO.FileInfo In dif.GetFiles
'扩展名部分未填,则统计所有文件,如果填写则
If String.IsNullOrWhiteSpace(extensions) Then
lines += CheckFile(f.FullName, countBlankLine)
Continue For
Else
For Each ext In arrayExts
If f.Extension = "." + ext Then
lines += CheckFile(f.FullName, countBlankLine)
End If
Next
End If
Next
Return lines
End Function
''' <summary>
''' 统计一个文件中的文字行数
''' </summary>
''' <param name="file">文件地址</param>
''' <param name="countBlankLine">true:空行计算在内 false:空行不计算在内</param>
''' <returns>文字行数(不含空行)</returns>
''' <remarks></remarks>
Public Function CheckFile(ByVal file As String, _
Optional ByVal countBlankLine As Boolean = False) As Integer
Console.WriteLine("file address: " + file)
'将文件内容读取到字符串
Dim sr As IO.StreamReader
Dim s As String
sr = IO.File.OpenText(file)
s = sr.ReadToEnd
sr.Close()
'统计文件中的全部行数
Dim temp() As String = s.Split(vbCrLf)
Dim lines As Integer = temp.Length
'如果不计算空行,则减去空行的数目
If countBlankLine = False Then
For i As Integer = 0 To temp.Length - 1
If String.IsNullOrWhiteSpace(temp(i)) Then
lines -= 1
End If
Next
End If
Console.WriteLine("lines: " + lines.ToString())
Console.WriteLine("======================")
Return lines
End Function
3.调用代码
Dim address As String = "E:\TestProgram\ChineseFlag" '目录名称
Console.WriteLine("Total lines: " + CheckFolder(address, "cs,xml,txt").ToString())
4.运行结果