我有一个名为 的空文件a.txt,我想在循环中向它输出一个 value(int),并覆盖 file 中的最后一个内容a.txt。例如,
// open a file
f, err := os.Open("test.txt")
if err != nil {
log.Fatal(err)
}
defer f.Close()
// another file
af, err := os.OpenFile("a.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
log.Fatal(err)
}
defer af.Close()
b := []byte{}
scanner := bufio.NewScanner(f)
for scanner.Scan() {
b = append(b, scanner.Bytes()...)
// how to output len(b) into a.txt?
}
Run Code Online (Sandbox Code Playgroud)
Akh*_*yil 24
你也可以试试:
os.OpenFile带有自定义标志来截断文件,如下图
package main
import (
"log"
"os"
)
func main() {
f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
if err != nil {
log.Fatal(err)
}
if err := f.Close(); err != nil {
log.Fatal(err)
}
}
Run Code Online (Sandbox Code Playgroud)
Boh*_*ian 14
改用os.Create():
f, err := os.Create("test.txt")
Run Code Online (Sandbox Code Playgroud)
来自 func 的文档:
Create 创建或截断指定文件。如果文件已存在,则会被截断。如果该文件不存在,则创建该文件...
只需使用truncate方法并从头开始再次写入文件。
err = f.Truncate(0)
_, err = f.Seek(0, 0)
_, err = fmt.Fprintf(f, "%d", len(b))
Run Code Online (Sandbox Code Playgroud)