github.com/gidoBOSSftw5731/go/src@v0.0.0-20210226122457-d24b0edbf019/os/example_test.go (about) 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. 4 5 package os_test 6 7 import ( 8 "fmt" 9 "io/fs" 10 "log" 11 "os" 12 "path/filepath" 13 "time" 14 ) 15 16 func ExampleOpenFile() { 17 f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0755) 18 if err != nil { 19 log.Fatal(err) 20 } 21 if err := f.Close(); err != nil { 22 log.Fatal(err) 23 } 24 } 25 26 func ExampleOpenFile_append() { 27 // If the file doesn't exist, create it, or append to the file 28 f, err := os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) 29 if err != nil { 30 log.Fatal(err) 31 } 32 if _, err := f.Write([]byte("appended some data\n")); err != nil { 33 f.Close() // ignore error; Write error takes precedence 34 log.Fatal(err) 35 } 36 if err := f.Close(); err != nil { 37 log.Fatal(err) 38 } 39 } 40 41 func ExampleChmod() { 42 if err := os.Chmod("some-filename", 0644); err != nil { 43 log.Fatal(err) 44 } 45 } 46 47 func ExampleChtimes() { 48 mtime := time.Date(2006, time.February, 1, 3, 4, 5, 0, time.UTC) 49 atime := time.Date(2007, time.March, 2, 4, 5, 6, 0, time.UTC) 50 if err := os.Chtimes("some-filename", atime, mtime); err != nil { 51 log.Fatal(err) 52 } 53 } 54 55 func ExampleFileMode() { 56 fi, err := os.Lstat("some-filename") 57 if err != nil { 58 log.Fatal(err) 59 } 60 61 fmt.Printf("permissions: %#o\n", fi.Mode().Perm()) // 0400, 0777, etc. 62 switch mode := fi.Mode(); { 63 case mode.IsRegular(): 64 fmt.Println("regular file") 65 case mode.IsDir(): 66 fmt.Println("directory") 67 case mode&fs.ModeSymlink != 0: 68 fmt.Println("symbolic link") 69 case mode&fs.ModeNamedPipe != 0: 70 fmt.Println("named pipe") 71 } 72 } 73 74 func ExampleIsNotExist() { 75 filename := "a-nonexistent-file" 76 if _, err := os.Stat(filename); os.IsNotExist(err) { 77 fmt.Println("file does not exist") 78 } 79 // Output: 80 // file does not exist 81 } 82 83 func ExampleExpand() { 84 mapper := func(placeholderName string) string { 85 switch placeholderName { 86 case "DAY_PART": 87 return "morning" 88 case "NAME": 89 return "Gopher" 90 } 91 92 return "" 93 } 94 95 fmt.Println(os.Expand("Good ${DAY_PART}, $NAME!", mapper)) 96 97 // Output: 98 // Good morning, Gopher! 99 } 100 101 func ExampleExpandEnv() { 102 os.Setenv("NAME", "gopher") 103 os.Setenv("BURROW", "/usr/gopher") 104 105 fmt.Println(os.ExpandEnv("$NAME lives in ${BURROW}.")) 106 107 // Output: 108 // gopher lives in /usr/gopher. 109 } 110 111 func ExampleLookupEnv() { 112 show := func(key string) { 113 val, ok := os.LookupEnv(key) 114 if !ok { 115 fmt.Printf("%s not set\n", key) 116 } else { 117 fmt.Printf("%s=%s\n", key, val) 118 } 119 } 120 121 os.Setenv("SOME_KEY", "value") 122 os.Setenv("EMPTY_KEY", "") 123 124 show("SOME_KEY") 125 show("EMPTY_KEY") 126 show("MISSING_KEY") 127 128 // Output: 129 // SOME_KEY=value 130 // EMPTY_KEY= 131 // MISSING_KEY not set 132 } 133 134 func ExampleGetenv() { 135 os.Setenv("NAME", "gopher") 136 os.Setenv("BURROW", "/usr/gopher") 137 138 fmt.Printf("%s lives in %s.\n", os.Getenv("NAME"), os.Getenv("BURROW")) 139 140 // Output: 141 // gopher lives in /usr/gopher. 142 } 143 144 func ExampleUnsetenv() { 145 os.Setenv("TMPDIR", "/my/tmp") 146 defer os.Unsetenv("TMPDIR") 147 } 148 149 func ExampleReadDir() { 150 files, err := os.ReadDir(".") 151 if err != nil { 152 log.Fatal(err) 153 } 154 155 for _, file := range files { 156 fmt.Println(file.Name()) 157 } 158 } 159 160 func ExampleMkdirTemp() { 161 dir, err := os.MkdirTemp("", "example") 162 if err != nil { 163 log.Fatal(err) 164 } 165 defer os.RemoveAll(dir) // clean up 166 167 file := filepath.Join(dir, "tmpfile") 168 if err := os.WriteFile(file, []byte("content"), 0666); err != nil { 169 log.Fatal(err) 170 } 171 } 172 173 func ExampleMkdirTemp_suffix() { 174 logsDir, err := os.MkdirTemp("", "*-logs") 175 if err != nil { 176 log.Fatal(err) 177 } 178 defer os.RemoveAll(logsDir) // clean up 179 180 // Logs can be cleaned out earlier if needed by searching 181 // for all directories whose suffix ends in *-logs. 182 globPattern := filepath.Join(os.TempDir(), "*-logs") 183 matches, err := filepath.Glob(globPattern) 184 if err != nil { 185 log.Fatalf("Failed to match %q: %v", globPattern, err) 186 } 187 188 for _, match := range matches { 189 if err := os.RemoveAll(match); err != nil { 190 log.Printf("Failed to remove %q: %v", match, err) 191 } 192 } 193 } 194 195 func ExampleCreateTemp() { 196 f, err := os.CreateTemp("", "example") 197 if err != nil { 198 log.Fatal(err) 199 } 200 defer os.Remove(f.Name()) // clean up 201 202 if _, err := f.Write([]byte("content")); err != nil { 203 log.Fatal(err) 204 } 205 if err := f.Close(); err != nil { 206 log.Fatal(err) 207 } 208 } 209 210 func ExampleCreateTemp_suffix() { 211 f, err := os.CreateTemp("", "example.*.txt") 212 if err != nil { 213 log.Fatal(err) 214 } 215 defer os.Remove(f.Name()) // clean up 216 217 if _, err := f.Write([]byte("content")); err != nil { 218 f.Close() 219 log.Fatal(err) 220 } 221 if err := f.Close(); err != nil { 222 log.Fatal(err) 223 } 224 } 225 226 func ExampleReadFile() { 227 data, err := os.ReadFile("testdata/hello") 228 if err != nil { 229 log.Fatal(err) 230 } 231 os.Stdout.Write(data) 232 233 // Output: 234 // Hello, Gophers! 235 } 236 237 func ExampleWriteFile() { 238 err := os.WriteFile("testdata/hello", []byte("Hello, Gophers!"), 0666) 239 if err != nil { 240 log.Fatal(err) 241 } 242 }