您的位置:首页 > 编程语言 > Go语言

golang实现的一个扫描指定文件夹下所有中文所在行的小工具

2018-04-01 19:52 951 查看
由于逻辑比较简单废话不多说直接上代码:

package main

import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
"strings"
"unicode"
)

var write *os.File

func IsChineseChar(str string) bool {
for _, r := range str {
if unicode.Is(unicode.Scripts["Han"], r) {
return true
}
}
return false
}

func scanAll(path string) {
files, _ := ioutil.ReadDir(path)
for _, fi := range files {
if fi.Name() != "chinese.txt" && !strings.Contains(fi.Name(), "XXX") {
if fi.IsDir() {
//过滤条件(某些文件夹不进入)
if !strings.Contains(fi.Name(), "XXX") {
scanAll(path + "/" + fi.Name())
}
} else {
//只扫描go文件
if strings.Contains(fi.Name(), ".go") {
file, _ := os.Open(path + "/" + fi.Name())
buffer := bufio.NewReader(file)
flag := true
for {
s, _, ok := buffer.ReadLine()
canWrite := true
if strings.Contains(string(s), "//"){
canWrite = false
}
if strings.Contains(string(s), "/*") {
flag = false
}
if ok == io.EOF {
break
}
if flag && canWrite && IsChineseChar(string(s)) {
write.WriteString(string(s) + "\n")
}
if strings.Contains(string(s), "*/") {
flag = true
}
}
file.Close()
}
}
}
}
}

func main() {
defer write.Close()
var err error
write, err = os.OpenFile("chinese.txt", os.O_RDWR|os.O_CREATE, 0766)
if err != nil {
fmt.Println("chinese.txt Read Err:", err)
return
}
scanAll(".")
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string golang
相关文章推荐