1.从用户给出的目录中,找出所有的 .jpg 文件。
package main
import (
"fmt"
"os"
"strings"
)
func findFile(path string, files *[]string) {
//以只读的形式打开目录
f, err := os.OpenFile(path, os.O_RDONLY, os.ModeDir)
if err != nil {
fmt.Println(err.Error())
os.Exit(-1)
}
defer f.Close()
//-1 读取所有的
fileInfo, _ := f.Readdir(-1)
separator := string(os.PathSeparator)
for _, file := range fileInfo {
newPath := path + separator + file.Name()
//判读是否为目录
if file.IsDir() {
findFile(newPath, files)
} else {
//判读文件是否以.jpg结尾
if strings.HasSuffix(newPath, ".jpg") {
*files = append(*files, newPath)
}
}
}
}
//从用户给出的目录中,找出所有的 .jpg 文件。
func main() {
var path string
fmt.Print("请输入目录:")
fmt.Scan(&path)
files := make([]string, 0)
//递归遍历目录查找文件
findFile(path, &files)
fmt.Println(files)
}
2.从用户给出的目录中,拷贝 .mp3文件到指定目录中。
package main
import (
"fmt"
"io"
"os"
"strings"
)
//查找文件
func DoFindFile(srcPath string, dstPath string) {
//以只读的形式打开目录
f, err := os.OpenFile(srcPath, os.O_RDONLY, os.ModeDir)
if err != nil {
fmt.Println(err.Error())
os.Exit(-1)
}
defer f.Close()
//-1 读取所有的
fileInfo, _ := f.Readdir(-1)
separator := string(os.PathSeparator)
for _, file := range fileInfo {
newPath := srcPath + separator + file.Name()
//判读是否为目录
if file.IsDir() {
DoFindFile(newPath, dstPath)
} else {
//判读文件是否以.jpg结尾
if strings.HasSuffix(newPath, ".mp3") {
//拷贝文件到指定目录
copyFile(newPath, dstPath, file.Name(), separator)
}
}
}
}
//拷贝文件
func copyFile(srcPath string, dstPath string, fileName string, separator string) {
//以只读方式打开文件
srcF, err := os.Open(srcPath)
if err != nil {
fmt.Println(err.Error())
return
}
defer srcF.Close()
//创建目的文件
dstF, err := os.OpenFile(dstPath+separator+fileName, os.O_CREATE, os.ModePerm)
if err != nil {
fmt.Println(err.Error())
return
}
defer dstF.Close()
buf := make([]byte, 1024)
for {
n, errB := srcF.Read(buf)
if errB != nil && errB != io.EOF {
break
}
if n == 0 {
fmt.Println("拷贝完成")
break
}
tmp := buf[:n]
dstF.Write(tmp)
}
}
func main() {
var srcPath string
var dstPath string
fmt.Print("请输入源路径:")
fmt.Scan(&srcPath)
fmt.Print("请输入目的路径:")
fmt.Scan(&dstPath)
//判断两个路径是否相同
if strings.ToLower(srcPath) == strings.ToLower(dstPath) {
fmt.Println("源路径与目的路径一致")
return
}
//查找文件
DoFindFile(srcPath, dstPath)
}
来源:https://www.cnblogs.com/yang-2018/p/11121420.html