Files and Directories
Write File
os.WriteFile creates or replaces a file with deterministic content.
write file
Writing a file returns an error value so code can report whether the write succeeded.
Write File
write_file.go
Replay: real traced execution (multi-file project)
package main
import (
"fmt"
"os"
)
func main() {
var word = "notes"
fileName := "go09_write_file.txt"
content := "title=" + word + "\n"
err := os.WriteFile(fileName, []byte(content), 0644)
if err != nil {
fmt.Println("written=", false)
return
}
defer os.Remove(fileName)
info, err := os.Stat(fileName)
if err != nil {
fmt.Println("stat=", false)
return
}
fmt.Println("word=", word)
fmt.Println("written=", true)
fmt.Println("size=", info.Size())
}
package main
import (
"fmt"
"os"
)
func main() {
var word = "tasks"
fileName := "go09_write_file.txt"
content := "title=" + word + "\n"
err := os.WriteFile(fileName, []byte(content), 0644)
if err != nil {
fmt.Println("written=", false)
return
}
defer os.Remove(fileName)
info, err := os.Stat(fileName)
if err != nil {
fmt.Println("stat=", false)
return
}
fmt.Println("word=", word)
fmt.Println("written=", true)
fmt.Println("size=", info.Size())
}
package main
import (
"fmt"
"os"
)
func main() {
var word = "draft"
fileName := "go09_write_file.txt"
content := "title=" + word + "\n"
err := os.WriteFile(fileName, []byte(content), 0644)
if err != nil {
fmt.Println("written=", false)
return
}
defer os.Remove(fileName)
info, err := os.Stat(fileName)
if err != nil {
fmt.Println("stat=", false)
return
}
fmt.Println("word=", word)
fmt.Println("written=", true)
fmt.Println("size=", info.Size())
}
word ← "notes", fileName ← "go09_write_file.txt", content ← "title=notes\n"
8func main() {9 var word→ "notes" = "notes" //@word="tasks", "draft"10 fileName→ "go09_write_file.txt" := "go09_write_file.txt"11 content→ "title=notes\n" := "title=" + word"notes" + "\n"1213 err→ <nil> := os.WriteFile(fileName"go09_write_file.txt", []byte(content"title=notes\n"), 0644)14 if err != nil {15 fmt.Println("written=", false)16 return17 }18 defer os.Remove(fileName"go09_write_file.txt")1920 info→ &os.fileStat{name:"go09_write_file.txt", size:12, mode:0x1a4, modTime:time.Time{wall:⟨addr A⟩, ext:63921827268, loc:(*time.Location)(⟨addr B⟩)}, sys:syscall.Stat_t{Dev:0x6d, Ino:⟨addr C⟩, Nlink:0x1, Mode:0x81a4, Uid:0x64, Gid:0x65, X__pad0:0, Rdev:0x0, Size:12, Blksize:4096, Blocks:8, Atim:syscall.Timespec{Sec:1786230468, Nsec:108016788}, Mtim:syscall.Timespec{Sec:1786230468, Nsec:108016788}, Ctim:syscall.Timespec{Sec:1786230468, Nsec:108016788}, X__unused:[3]int64{0, 0, 0}}}, err→ <nil> := os.Stat(fileName"go09_write_file.txt")21 if err != nil {22 fmt.Println("stat=", false)23 return24 }2526 fmt.Println("word=", word"notes")27 fmt.Println("written=", true)28 fmt.Println("size=", info&os.fileStat{name:"go09_write_file.txt", size:12, mode:0x1a4, modTime:time.Time{wall:⟨addr A⟩, ext:63921827268, loc:(*time.Location)(⟨addr B⟩)}, sys:syscall.Stat_t{Dev:0x6d, Ino:⟨addr C⟩, Nlink:0x1, Mode:0x81a4, Uid:0x64, Gid:0x65, X__pad0:0, Rdev:0x0, Size:12, Blksize:4096, Blocks:8, Atim:syscall.Timespec{Sec:1786230468, Nsec:108016788}, Mtim:syscall.Timespec{Sec:1786230468, Nsec:108016788}, Ctim:syscall.Timespec{Sec:1786230468, Nsec:108016788}, X__unused:[3]int64{0, 0, 0}}}.Size())29}outputword= notes written= true size= 12
word ← "tasks", fileName ← "go09_write_file.txt", content ← "title=tasks\n"
8func main() {9 var word→ "tasks" = "tasks"10 fileName→ "go09_write_file.txt" := "go09_write_file.txt"11 content→ "title=tasks\n" := "title=" + word"tasks" + "\n"1213 err→ <nil> := os.WriteFile(fileName"go09_write_file.txt", []byte(content"title=tasks\n"), 0644)14 if err != nil {15 fmt.Println("written=", false)16 return17 }18 defer os.Remove(fileName"go09_write_file.txt")1920 info→ &os.fileStat{name:"go09_write_file.txt", size:12, mode:0x1a4, modTime:time.Time{wall:⟨addr A⟩, ext:63921921583, loc:(*time.Location)(⟨addr B⟩)}, sys:syscall.Stat_t{Dev:0x6d, Ino:⟨addr C⟩, Nlink:0x1, Mode:0x81a4, Uid:0x64, Gid:0x65, X__pad0:0, Rdev:0x0, Size:12, Blksize:4096, Blocks:8, Atim:syscall.Timespec{Sec:1786324783, Nsec:568175031}, Mtim:syscall.Timespec{Sec:1786324783, Nsec:568175031}, Ctim:syscall.Timespec{Sec:1786324783, Nsec:568175031}, X__unused:[3]int64{0, 0, 0}}}, err→ <nil> := os.Stat(fileName"go09_write_file.txt")21 if err != nil {22 fmt.Println("stat=", false)23 return24 }2526 fmt.Println("word=", word"tasks")27 fmt.Println("written=", true)28 fmt.Println("size=", info&os.fileStat{name:"go09_write_file.txt", size:12, mode:0x1a4, modTime:time.Time{wall:⟨addr A⟩, ext:63921921583, loc:(*time.Location)(⟨addr B⟩)}, sys:syscall.Stat_t{Dev:0x6d, Ino:⟨addr C⟩, Nlink:0x1, Mode:0x81a4, Uid:0x64, Gid:0x65, X__pad0:0, Rdev:0x0, Size:12, Blksize:4096, Blocks:8, Atim:syscall.Timespec{Sec:1786324783, Nsec:568175031}, Mtim:syscall.Timespec{Sec:1786324783, Nsec:568175031}, Ctim:syscall.Timespec{Sec:1786324783, Nsec:568175031}, X__unused:[3]int64{0, 0, 0}}}.Size())29}outputword= tasks written= true size= 12
word ← "draft", fileName ← "go09_write_file.txt", content ← "title=draft\n"
8func main() {9 var word→ "draft" = "draft"10 fileName→ "go09_write_file.txt" := "go09_write_file.txt"11 content→ "title=draft\n" := "title=" + word"draft" + "\n"1213 err→ <nil> := os.WriteFile(fileName"go09_write_file.txt", []byte(content"title=draft\n"), 0644)14 if err != nil {15 fmt.Println("written=", false)16 return17 }18 defer os.Remove(fileName"go09_write_file.txt")1920 info→ &os.fileStat{name:"go09_write_file.txt", size:12, mode:0x1a4, modTime:time.Time{wall:⟨addr A⟩, ext:63921921586, loc:(*time.Location)(⟨addr B⟩)}, sys:syscall.Stat_t{Dev:0x6d, Ino:⟨addr C⟩, Nlink:0x1, Mode:0x81a4, Uid:0x64, Gid:0x65, X__pad0:0, Rdev:0x0, Size:12, Blksize:4096, Blocks:8, Atim:syscall.Timespec{Sec:1786324786, Nsec:305059584}, Mtim:syscall.Timespec{Sec:1786324786, Nsec:305059584}, Ctim:syscall.Timespec{Sec:1786324786, Nsec:305059584}, X__unused:[3]int64{0, 0, 0}}}, err→ <nil> := os.Stat(fileName"go09_write_file.txt")21 if err != nil {22 fmt.Println("stat=", false)23 return24 }2526 fmt.Println("word=", word"draft")27 fmt.Println("written=", true)28 fmt.Println("size=", info&os.fileStat{name:"go09_write_file.txt", size:12, mode:0x1a4, modTime:time.Time{wall:⟨addr A⟩, ext:63921921586, loc:(*time.Location)(⟨addr B⟩)}, sys:syscall.Stat_t{Dev:0x6d, Ino:⟨addr C⟩, Nlink:0x1, Mode:0x81a4, Uid:0x64, Gid:0x65, X__pad0:0, Rdev:0x0, Size:12, Blksize:4096, Blocks:8, Atim:syscall.Timespec{Sec:1786324786, Nsec:305059584}, Mtim:syscall.Timespec{Sec:1786324786, Nsec:305059584}, Ctim:syscall.Timespec{Sec:1786324786, Nsec:305059584}, X__unused:[3]int64{0, 0, 0}}}.Size())29}outputword= draft written= true size= 12