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  }