从一个目录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)
}
}
}
/*