自动化管理文件和文件夹
输出文件和文件夹
获取当前工作目录的根路径
包名:os
原型:func Getwd()(pwd string, err error)
作用:获取当前文件路径
返回:当前文件路径的字符串和一个 err
信息
示例:
package main
import (
"fmt"
"os"
)
func main() {
dir, _ := os.Getwd()
fmt.Println("当前路径:", dir)
}
输出:
当前路径: D:\Projects\Go\mGoLab01
组合路径
包名:os
原型:func Join(elem ...string) string
作用:将任意数量的路径元素放入一个单一路径里,会根据需要添加斜杠。结果是经过简化的,所有的空字符串元素会被忽略。
返回:组合后路径
示例:
package main
import (
"fmt"
"path"
)
func main() {
out := path.Join("a", "b", "c")
fmt.Println("组合后路径:", out)
}
输出:
组合后路径: a/b/c
遍历文件夹
包名:os
原型:func Open(name string) (file *File, err error)
作用:Open
打开一个文件用于读取。如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有 O_RDONLY
模式。如果出错,错误底层类型是 *PathError
。
返回:文件对象
包名:os
原型:func (f *File) Readdir(n int) (fi []FileInfo, err error)
作用:Readdir
读取目录f的内容,返回一个有n个成员的 []FileInfo
,这些 FileInfo
是被 Lstat
返回的,采用目录顺序。对本函数的下一次调用会返回上一次调用剩余未读取的内容的信息。
如果 n > 0
,Readdir
函数会返回一个最多n个成员的切片。这时,如果Readdir返回一个空切片,它会返回一个非nil的错误说明原因。如果到达了目录f的结尾,返回值 err
会是 io.EOF
。
如果 n <= 0
,Readdir
函数返回目录中剩余所有文件对象的 FileInfo
构成的切片。此时,如果 Readdir
调用成功(读取所有内容直到结尾),它会返回该切片和nil的错误值。如果在到达结尾前遇到错误,会返回之前成功读取的 FileInfo
构成的切片和该错误。
返回:文件对象
示例:
package main
import (
"fmt"
"os"
)
func main() {
f, err := os.Open(`F:\blog\officeauto`)
if err != nil {
panic(err)
}
fs, err := f.Readdir(0)
if err != nil {
panic(err)
}
for _, f := range fs {
fmt.Println(f.Name())
}
}
包名:io/ioutil
原型:func ReadDir(dirname string) ([]os.FileInfo, error)
作用:返回 dirname
指定的目录的目录信息的有序列表。
返回:文件对象
示例:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
fs, err := ioutil.ReadDir(`F:\blog\officeauto`)
if err != nil {
panic(err)
}
for _, f := range fs {
fmt.Println(f.Name())
}
}
判断文件是否为目录
包名:os
原型:func (f *File) Stat() (fi FileInfo, err error)
作用:Stat
返回描述文件 f
的 FileInfo
类型值。如果出错,错误底层类型是 *PathError
。
返回:文件对象
包名:os
原型:func (m FileMode) IsDir() bool
作用:IsDir
报告 m
是否是一个目录。
返回:bool
示例:
package main
import (
"fmt"
"os"
)
func main() {
s, _ := os.Stat(`F:\blog\officeauto`)
fmt.Println(s.IsDir())
fmt.Println(s.Mode().IsDir())
}
输出:
true
true
判断文件是否为文件
包名:os
原型:func (m FileMode) IsRegular() bool
作用:IsRegular
报告 m
是否是一个普通文件。
返回:bool
示例:
package main
import (
"fmt"
"os"
)
func main() {
s, _ := os.Stat(`F:\blog\officeauto`)
fmt.Println(s.Mode().IsRegular())
}
输出:
false