Files and Directories
Read Text
Go can read a small text file into memory with os.ReadFile.
read file
`os.ReadFile` returns the file contents as bytes, which can be converted to a string.
Read Text
read_text.go
Replay: real traced execution (multi-file project)
package main
import (
"fmt"
"os"
"strings"
)
func main() {
var line = "alpha"
fileName := "go09_read_text.txt"
content := line + "\n"
err := os.WriteFile(fileName, []byte(content), 0644)
if err != nil {
fmt.Println("writeError=", err != nil)
return
}
defer os.Remove(fileName)
data, err := os.ReadFile(fileName)
if err != nil {
fmt.Println("readError=", err != nil)
return
}
text := strings.TrimSpace(string(data))
fmt.Println("file=", fileName)
fmt.Println("text=", text)
fmt.Println("length=", len(text))
}
package main
import (
"fmt"
"os"
"strings"
)
func main() {
var line = "beta"
fileName := "go09_read_text.txt"
content := line + "\n"
err := os.WriteFile(fileName, []byte(content), 0644)
if err != nil {
fmt.Println("writeError=", err != nil)
return
}
defer os.Remove(fileName)
data, err := os.ReadFile(fileName)
if err != nil {
fmt.Println("readError=", err != nil)
return
}
text := strings.TrimSpace(string(data))
fmt.Println("file=", fileName)
fmt.Println("text=", text)
fmt.Println("length=", len(text))
}
package main
import (
"fmt"
"os"
"strings"
)
func main() {
var line = "gamma"
fileName := "go09_read_text.txt"
content := line + "\n"
err := os.WriteFile(fileName, []byte(content), 0644)
if err != nil {
fmt.Println("writeError=", err != nil)
return
}
defer os.Remove(fileName)
data, err := os.ReadFile(fileName)
if err != nil {
fmt.Println("readError=", err != nil)
return
}
text := strings.TrimSpace(string(data))
fmt.Println("file=", fileName)
fmt.Println("text=", text)
fmt.Println("length=", len(text))
}
line ← "alpha", fileName ← "go09_read_text.txt", content ← "alpha\n"
9func main() {10 var line→ "alpha" = "alpha" //@line="beta", "gamma"11 fileName→ "go09_read_text.txt" := "go09_read_text.txt"12 content→ "alpha\n" := line"alpha" + "\n"1314 err→ <nil> := os.WriteFile(fileName"go09_read_text.txt", []byte(content"alpha\n"), 0644)15 if err != nil {16 fmt.Println("writeError=", err != nil)17 return18 }19 defer os.Remove(fileName"go09_read_text.txt")2021 data→ []byte{0x61, 0x6c, 0x70, 0x68, 0x61, 0xa}, err→ <nil> := os.ReadFile(fileName"go09_read_text.txt")22 if err != nil {23 fmt.Println("readError=", err != nil)24 return25 }2627 text→ "alpha" := strings.TrimSpace(string(data[]byte{0x61, 0x6c, 0x70, 0x68, 0x61, 0xa}))28 fmt.Println("file=", fileName"go09_read_text.txt")29 fmt.Println("text=", text"alpha")30 fmt.Println("length=", len(text"alpha"))31}outputfile= go09_read_text.txt text= alpha length= 5
line ← "beta", fileName ← "go09_read_text.txt", content ← "beta\n"
9func main() {10 var line→ "beta" = "beta"11 fileName→ "go09_read_text.txt" := "go09_read_text.txt"12 content→ "beta\n" := line"beta" + "\n"1314 err→ <nil> := os.WriteFile(fileName"go09_read_text.txt", []byte(content"beta\n"), 0644)15 if err != nil {16 fmt.Println("writeError=", err != nil)17 return18 }19 defer os.Remove(fileName"go09_read_text.txt")2021 data→ []byte{0x62, 0x65, 0x74, 0x61, 0xa}, err→ <nil> := os.ReadFile(fileName"go09_read_text.txt")22 if err != nil {23 fmt.Println("readError=", err != nil)24 return25 }2627 text→ "beta" := strings.TrimSpace(string(data[]byte{0x62, 0x65, 0x74, 0x61, 0xa}))28 fmt.Println("file=", fileName"go09_read_text.txt")29 fmt.Println("text=", text"beta")30 fmt.Println("length=", len(text"beta"))31}outputfile= go09_read_text.txt text= beta length= 4
line ← "gamma", fileName ← "go09_read_text.txt", content ← "gamma\n"
9func main() {10 var line→ "gamma" = "gamma"11 fileName→ "go09_read_text.txt" := "go09_read_text.txt"12 content→ "gamma\n" := line"gamma" + "\n"1314 err→ <nil> := os.WriteFile(fileName"go09_read_text.txt", []byte(content"gamma\n"), 0644)15 if err != nil {16 fmt.Println("writeError=", err != nil)17 return18 }19 defer os.Remove(fileName"go09_read_text.txt")2021 data→ []byte{0x67, 0x61, 0x6d, 0x6d, 0x61, 0xa}, err→ <nil> := os.ReadFile(fileName"go09_read_text.txt")22 if err != nil {23 fmt.Println("readError=", err != nil)24 return25 }2627 text→ "gamma" := strings.TrimSpace(string(data[]byte{0x67, 0x61, 0x6d, 0x6d, 0x61, 0xa}))28 fmt.Println("file=", fileName"go09_read_text.txt")29 fmt.Println("text=", text"gamma")30 fmt.Println("length=", len(text"gamma"))31}outputfile= go09_read_text.txt text= gamma length= 5