VB.NET 统计文件夹内文件行数

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.运行结果

161428_umYB_1425762.png

转载于:https://my.oschina.net/Tsybius2014/blog/282080

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值