1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
17 func ExampleOpenFile() {
18 f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0644)
22 if err := f.Close(); err != nil {
27 func ExampleOpenFile_append() {
28 // If the file doesn't exist, create it, or append to the file
29 f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
33 if _, err := f.Write([]byte("appended some data\n")); err != nil {
34 f.Close() // ignore error; Write error takes precedence
37 if err := f.Close(); err != nil {
43 if err := os.Chmod("some-filename", 0644); err != nil {
48 func ExampleChtimes() {
49 mtime := time.Date(2006, time.February, 1, 3, 4, 5, 0, time.UTC)
50 atime := time.Date(2007, time.March, 2, 4, 5, 6, 0, time.UTC)
51 if err := os.Chtimes("some-filename", atime, mtime); err != nil {
56 func ExampleFileMode() {
57 fi, err := os.Lstat("some-filename")
62 fmt.Printf("permissions: %#o\n", fi.Mode().Perm()) // 0400, 0777, etc.
63 switch mode := fi.Mode(); {
64 case mode.IsRegular():
65 fmt.Println("regular file")
67 fmt.Println("directory")
68 case mode&fs.ModeSymlink != 0:
69 fmt.Println("symbolic link")
70 case mode&fs.ModeNamedPipe != 0:
71 fmt.Println("named pipe")
75 func ExampleErrNotExist() {
76 filename := "a-nonexistent-file"
77 if _, err := os.Stat(filename); errors.Is(err, fs.ErrNotExist) {
78 fmt.Println("file does not exist")
81 // file does not exist
84 func ExampleExpand() {
85 mapper := func(placeholderName string) string {
86 switch placeholderName {
96 fmt.Println(os.Expand("Good ${DAY_PART}, $NAME!", mapper))
99 // Good morning, Gopher!
102 func ExampleExpandEnv() {
103 os.Setenv("NAME", "gopher")
104 os.Setenv("BURROW", "/usr/gopher")
106 fmt.Println(os.ExpandEnv("$NAME lives in ${BURROW}."))
109 // gopher lives in /usr/gopher.
112 func ExampleLookupEnv() {
113 show := func(key string) {
114 val, ok := os.LookupEnv(key)
116 fmt.Printf("%s not set\n", key)
118 fmt.Printf("%s=%s\n", key, val)
122 os.Setenv("SOME_KEY", "value")
123 os.Setenv("EMPTY_KEY", "")
132 // MISSING_KEY not set
135 func ExampleGetenv() {
136 os.Setenv("NAME", "gopher")
137 os.Setenv("BURROW", "/usr/gopher")
139 fmt.Printf("%s lives in %s.\n", os.Getenv("NAME"), os.Getenv("BURROW"))
142 // gopher lives in /usr/gopher.
145 func ExampleUnsetenv() {
146 os.Setenv("TMPDIR", "/my/tmp")
147 defer os.Unsetenv("TMPDIR")
150 func ExampleReadDir() {
151 files, err := os.ReadDir(".")
156 for _, file := range files {
157 fmt.Println(file.Name())
161 func ExampleMkdirTemp() {
162 dir, err := os.MkdirTemp("", "example")
166 defer os.RemoveAll(dir) // clean up
168 file := filepath.Join(dir, "tmpfile")
169 if err := os.WriteFile(file, []byte("content"), 0666); err != nil {
174 func ExampleMkdirTemp_suffix() {
175 logsDir, err := os.MkdirTemp("", "*-logs")
179 defer os.RemoveAll(logsDir) // clean up
181 // Logs can be cleaned out earlier if needed by searching
182 // for all directories whose suffix ends in *-logs.
183 globPattern := filepath.Join(os.TempDir(), "*-logs")
184 matches, err := filepath.Glob(globPattern)
186 log.Fatalf("Failed to match %q: %v", globPattern, err)
189 for _, match := range matches {
190 if err := os.RemoveAll(match); err != nil {
191 log.Printf("Failed to remove %q: %v", match, err)
196 func ExampleCreateTemp() {
197 f, err := os.CreateTemp("", "example")
201 defer os.Remove(f.Name()) // clean up
203 if _, err := f.Write([]byte("content")); err != nil {
206 if err := f.Close(); err != nil {
211 func ExampleCreateTemp_suffix() {
212 f, err := os.CreateTemp("", "example.*.txt")
216 defer os.Remove(f.Name()) // clean up
218 if _, err := f.Write([]byte("content")); err != nil {
222 if err := f.Close(); err != nil {
227 func ExampleReadFile() {
228 data, err := os.ReadFile("testdata/hello")
232 os.Stdout.Write(data)
238 func ExampleWriteFile() {
239 err := os.WriteFile("testdata/hello", []byte("Hello, Gophers!"), 0666)
245 func ExampleMkdir() {
246 err := os.Mkdir("testdir", 0750)
247 if err != nil && !os.IsExist(err) {
250 err = os.WriteFile("testdir/testfile.txt", []byte("Hello, Gophers!"), 0660)
256 func ExampleMkdirAll() {
257 err := os.MkdirAll("test/subdir", 0750)
261 err = os.WriteFile("test/subdir/testfile.txt", []byte("Hello, Gophers!"), 0660)