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
, 0755)
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)
258 if err
!= nil && !os
.IsExist(err
) {
261 err
= os
.WriteFile("test/subdir/testfile.txt", []byte("Hello, Gophers!"), 0660)