github.com/pbberlin/tools@v0.0.0-20160910141205-7aa5421c2169/os/osutilpb/file_io.go (about) 1 package osutilpb 2 3 /* 4 use fsi/common/convenience funcs instead 5 */ 6 7 import ( 8 "bytes" 9 "io/ioutil" 10 "os" 11 "path/filepath" 12 13 "github.com/pbberlin/tools/net/http/loghttp" 14 "golang.org/x/net/html" 15 ) 16 17 func WriteBytesToFilename(filename string, ptrB *bytes.Buffer) { 18 Bytes2File(filename, ptrB.Bytes()) 19 } 20 21 // Dom2File writes DOM to file 22 func Dom2File(fn string, node *html.Node) { 23 lg, _ := loghttp.BuffLoggerUniversal(nil, nil) 24 25 var b bytes.Buffer 26 err := html.Render(&b, node) 27 lg(err) 28 Bytes2File(fn, b.Bytes()) 29 } 30 31 // Bytes2File writes bytes; creates path if neccessary 32 // and logs any errors even to appengine log 33 func Bytes2File(fn string, b []byte) { 34 lg, _ := loghttp.BuffLoggerUniversal(nil, nil) 35 36 var err error 37 err = ioutil.WriteFile(fn, b, 0) 38 if err != nil { 39 40 err = os.MkdirAll(filepath.Dir(fn), os.ModePerm) 41 lg(err, "directory creation failed: %v") 42 43 err = ioutil.WriteFile(fn, b, 0) 44 lg(err) 45 46 } 47 } 48 49 // BytesFromFile reads bytes and logs any 50 // errors even to appengine log. 51 func BytesFromFile(fn string) []byte { 52 lg, _ := loghttp.BuffLoggerUniversal(nil, nil) 53 b, err := ioutil.ReadFile(fn) 54 lg(err) 55 return b 56 }