Golang 计算目录中代码的行数
发布时间:2020-12-16 18:42:38 所属栏目:大数据 来源:网络整理
导读:程序名字 countline os 包来获取运行参数 运行的时候要提供两个参数,一个是目录,一个是扩展名 如: countline . go 没有运行参数的就退出程序 if len (os.Args) != 3 { fmt.Println( "countline [Dir] [extention]" ) return } 计算文件有多少个 ‘n’ fu
程序名字countline os 包来获取运行参数运行的时候要提供两个参数,一个是目录,一个是扩展名 没有运行参数的就退出程序 if len(os.Args) != 3 {
fmt.Println("countline [Dir] [extention]")
return
}
计算文件有多少个 ‘n’func countFileLine(name string) (count int64,err error) {
fmt.Println("count file:",name)
data,err := ioutil.ReadFile(name)
if err != nil {
return
}
count = 0
for i := 0; i < len(data); i++ {
if data[i] == 'n' {
count++
}
}
fmt.Println("line:",count)
return
}
遍历目录filepath.Walk(os.Args[1],func(path string,info os.FileInfo,err error) error {
if getExt(path) == os.Args[2] {
fmt.Println(path)
n,e := countFileLine(path)
if e == nil {
fmt.Println("lines: ",n)
sum = sum + n
}
}
return nil
})
filepath.Walk会第二个成员是一个函数,其中的path就是遍历得到的文件路径,经过判断它是一个文件,就直接读出来。 完整代码: package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
var (
sum int64
)
func main() {
if len(os.Args) != 3 {
fmt.Println("countline [Dir] [extention]")
return
}
filepath.Walk(os.Args[1],n)
sum = sum + n
}
}
return nil
})
fmt.Println("total lines: ",sum)
}
//获取得文件的扩展名,最后一个.后面的内容
func getExt(f string) (ext string) {
// fmt.Println("ext:",f)
index := strings.LastIndex(f,".")
data := []byte(f)
for i := index + 1; i < len(data); i++ {
ext = ext + string([]byte{data[i]})
}
return
}
func countFileLine(name string) (count int64,count)
return
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |