非零基础自学Golang
文章目录
- 非零基础自学Golang
- 第11章 文件操作
- 11.2 文件基本操作
- 11.2.3 文件写入
- 11.2.4 删除文件
第11章 文件操作
11.2 文件基本操作
11.2.3 文件写入
与之前的文件读取相比,向文件写入内容也有两个接口,分别为Write和WriteAt。
func (f *File) Write(b []byte) (n int, err error)
Write向文件中写入len(b)字节数据。
它返回写入的字节数和可能遇到的任何错误。如果返回值为n!=len(b),本方法会返回一个非nil的错误。
[ 动手写 11.2.4]
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("C:\\Windows\\Temp\\1.txt")
if err != nil {
fmt.Println(err)
}
data := "我是数据\r\n"
for i := 0; i < 3; i++ {
// 写入byte 的slice数据
file.Write([]byte(data))
}
file.Close()
}
运行结果
使用WriteAt可以指定从文件的什么位置开始写:
func (f *File) WriteAt(b []byte, off int64) (n int, err error)
WriteAt在指定的位置(相对于文件开始位置)写入len(b)字节数据。它返回写入的字节数和可能遇到的任何错误。如果返回值为n!=len(b),本方法会返回一个非nil的错误。
[ 动手写 11.2.5]
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
file, err := os.Create("C:\\Windows\\Temp\\1.txt")
if err != nil {
fmt.Println(err)
}
for i := 0; i < 3; i++ {
// 按指定偏移量写入数据
ix := i * 64
file.WriteAt([]byte("我是数据"+strconv.Itoa(i)+"\r\n"), int64(ix))
}
file.Close()
}
运行结果
使用Write和WriteAt接口函数对文件进行写入数据时,会将原文件覆盖,并从文件开始位置处写入内容。
11.2.4 删除文件
删除文件使用os库中的Remove和RemoveAll接口,与删除目录的接口一致。
[ 动手写 11.2.6]
package main
import (
"fmt"
"os"
)
func main() {
// 删除文件
err := os.Remove("C:\\Windows\\Temp\\1.txt")
if err != nil {
fmt.Println(err)
} else {
fmt.Println("删除成功!")
}
// 删除指定path 下的所有文件
err = os.RemoveAll("C:\\Windows\\Temp\\test\\")
if err != nil {
fmt.Println(err)
} else {
fmt.Println("删除成功!")
}
}
删除前
运行结果
删除后
OK,没毛病