-
Notifications
You must be signed in to change notification settings - Fork 0
learningA
Doifo edited this page Aug 4, 2023
·
1 revision
// 获取文件夹下文件
files, err = os.ReadDir(path)
// 文件是否是目录
file.IsDir()
// 拆分目录名与文件名
path.Split(string)
// 打开文件
file, err := os.Open(filename)
file, err := os.OpenFile(filename, mode, perm)
// 关闭文件
file.Close()
// 拷贝文件
io.Copy(target, source)
// 读取文件
bytes, err := os.ReadFile(f)
// 写入文件
err = os.WriteFile(destName, bytes, 0644)
// 分片读取
n, err := src.Read(slice)
// 分片写入
dst.Write(slice)
// bufio 按行读取
reader := bufio.NewReader(src)
line, err := reader.ReadString('\n')
样例代码
func getFiles(dir string) []string {
fs, err := os.ReadDir(dir)
list := make([]string, 0)
if err != nil {
return list
}
for _, f := range fs {
if f.IsDir() {
continue
}
list = append(list, strings.Trim(dir, "/")+"/"+f.Name())
}
return list
}
// CopyFile 拷贝文件
func CopyFile(srcName, destName string) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dest, err := os.OpenFile(destName, os.O_CREATE|os.O_WRONLY, 0664)
if err != nil {
return
}
defer dest.Close()
io.Copy(dest, src)
}
// ReadWriteFile 一次性读写
func ReadWriteFile(filename string) {
bytes, err := os.ReadFile(filename)
if err != nil {
return
}
_, name := path.Split(filename)
destName := destDir + "/" + name
err = os.WriteFile(destName, bytes, 0644)
if err != nil {
return
}
}
// OneSideReadWriteFile 分片读写
func OneSideReadWriteFile(srcName, destName string) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dest, err := os.OpenFile(destName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0664)
if err != nil {
return
}
defer dest.Close()
buf := make([]byte, 1024)
for {
n, err := src.Read(buf)
if err != nil && err != io.EOF {
continue
}
if n == 0 {
break
}
dest.Write(buf[:n])
}
}
// Line 通过bufio按行读取
func ReadLine(srcName string) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
reader := bufio.NewReader(src)
for {
line, err := reader.ReadString('\n')
if err == io.EOF {
break
}
print(line)
}
}