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(".") }
相关文章推荐
- 写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名
- 写一个PHP函数,实现扫描并打印出指定目录下(含子目录)的所有jpg文件名
- 实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面
- 返回一个指定文件夹下的所有文件
- 扫描一个文件夹里的所有文件
- [PHP][Function]实现将一个文件夹下的所有文件及文件夹复制到另一个文件夹里(保持原有结构
- 用封装的方法实现从文件夹名下所有的指定类型文件数据导入到数据库
- matlab中怎样读取一个文件夹里面的指定类型的所有文件的名称?
- c#实现将一个文件夹中的所有文件复制到另一个文件夹,并在新文件夹中创建一个txt文件记录copy的文件综述以及文件名称
- java实现检索指定路径下的所有的下属文件夹和文件
- vc2010+openCV1.0实现将指定目录下的所有jpg文件缩放后存放到目标文件夹
- JAVA实现把指定文件夹下的所有文件压缩成zip包
- 发一个以前写的遍历文件夹中文的文件夹,或指定类型(文件名)的文件夹
- JAVA---实现检索指定路径下的所有的下属文件夹和文件
- 一个替换某文件夹下的所有文件中特定字符串的小工具
- 用vbs实现按创建日期的顺序列出一个文件夹中的所有文件
- 文件夹扫描--获取指定文件夹下所有的指定格式的文件
- [PHP][Function]实现将一个文件夹下的所有文件及文件夹复制到另一个文件夹里(保持原有结构)[已验证][原创]
- 用JAVA扫描指定文件夹下面所有以.txt结尾的文件,并将其绝对路径输出
- C语言实现的计算一个文件下的所有文件的总大小(还有BUG,如果文件夹下面还有文件家就有问题,等待更新)