从一个目录paths下查找包含关键字的目录、文件、文件内容中有关键字的文件
/* 查找paths目录下包含关键字的结果 case1 是目录,包含关键字 case2 是文件,文件名路径包含关键字 case3 文件内容包含关键字 */ func FindKeyword(paths string, keyword string) { //读取paths文件信息,结果是os.FileInfo类型 fileinfo, err := os.Stat(paths) if err != nil { fmt.Println(err) } //FileInfo有IsDir()方法可以判断是否是目录,还有Mode()方法返回FileMode类型的结果,表示文件的模式和权限 //等价于FileMode类型的IsDir()方法,FileMode还有IsRegular()判断是否是普通文件 if fileinfo.IsDir() { if strings.Contains(paths, keyword) { fmt.Println("case1:" + paths) } //读取paths这个目录下的所有文件信息,返回的是os.FileInfo类型 fileinfos, err := ioutil.ReadDir(paths) if err != nil { fmt.Println(err) } for _, fi := range fileinfos { //Name()方法返回文件信息中的文件名 fname := fi.Name() //将paths和fname使用slash连接起来 newpaths := filepath.Join(paths, fname) fmt.Println(newpaths) FindKeyword(newpaths, keyword) } } else { //文件名路径中有关键字 if strings.Contains(paths, keyword) { fmt.Println("case2:" + paths) } //读取文件的全部内容 content, err := ioutil.ReadFile(paths) if err != nil { fmt.Println(err) } //文件内容中有关键字 if strings.Contains(string(content), keyword) { fmt.Println("case3:" + paths) } } }