相关的包:
import ("fmt""io/ioutil""os")
一、获取当前工作路径
currentPath, _ := os.Getwd()
fmt.Println(currentPath)
二、获取文件(夹)信息
filePath := "c:/windows/notepad.exe"
stat, _ := os.Stat(filePath)
fmt.Println("文件(夹)名:", stat.Name())
fmt.Println("文件大小:", stat.Size())
fmt.Println("权限:", stat.Mode())
fmt.Println("是否是文件夹:", stat.IsDir())
fmt.Println("修改时间:", stat.ModTime())
输出:
文件名: notepad.exe
文件大小: 202240
权限: -rw-rw-rw-
是否是文件夹: false
修改时间: 2020-09-15 14:16:51.9560539 +0800 CST
先读取文件再获取文件信息:
filePath := "c:/windows"
file, _ := os.Open(filePath)
fmt.Println(file.Name())
fmt.Println(file.Stat())
三、列出子文件(夹)
只列出子文件(夹)名字:
filePath := "c:/windows"
file, _ := os.Open(filePath)
for i := 1; ; i++{
names, err := file.Readdirnames(10 * i)
if err != nil {
break
}
for _, name := range names{
fmt.Println(name)
}
}
获取所有子文件:
filePath := "c:/windows"
file, _ := os.Open(filePath)
for i := 1; ; i++{
names, err := file.Readdir(10 * i)
if err != nil {
break
}
for _, file := range names{
if file.IsDir() {
continue
}
fmt.Println(file.Name())
}
}
四、创建、修改、删除、拷贝、重命名
创建文件夹:
err := os.Mkdir("d:/test", 0666)
if err != nil {
fmt.Println(err)
}
fmt.Println("创建文件夹成功")
创建文件:
_, err := os.Create("d:/test")
if err != nil {
fmt.Println(err)
}
fmt.Println("创建文件成功")
:::info 注意:如果有同名的文件夹存在,创建同名文件将会失败 :::
重命名(移动文件):
err := os.Rename("d:/test", "d:/test1")
if err != nil {
fmt.Println(err)
}
fmt.Println("重命名成功")
删除文件:
err := os.Remove("d:/test")
if err != nil {
fmt.Println(err)
}
fmt.Println("删除文件成功")
拷贝文件:暂时没有发现现成的API,可以自己封装一个拷贝文件的方法。
func CopyFile(srcPath string, destPath string) {
data, err := ioutil.ReadFile(srcPath)
fmt.Println(string(data))
if err != nil {
fmt.Printf("文件打开失败=%v\n", err)
return
}
err = ioutil.WriteFile(destPath, data, 0666)
if err != nil {
fmt.Printf("文件拷贝失败=%v\n", err)
return
}
fmt.Println("拷贝成功")
}
// 调用
CopyFile("d:/test", "d:/test1")
