github.com/jonasnick/go-ethereum@v0.7.12-0.20150216215225-22176f05d387/ethutil/path.go (about)

     1  package ethutil
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"os/user"
     7  	"path"
     8  	"strings"
     9  )
    10  
    11  func ExpandHomePath(p string) (path string) {
    12  	path = p
    13  
    14  	// Check in case of paths like "/something/~/something/"
    15  	if len(path) > 1 && path[:2] == "~/" {
    16  		usr, _ := user.Current()
    17  		dir := usr.HomeDir
    18  
    19  		path = strings.Replace(p, "~", dir, 1)
    20  	}
    21  
    22  	return
    23  }
    24  
    25  func FileExist(filePath string) bool {
    26  	_, err := os.Stat(filePath)
    27  	if err != nil && os.IsNotExist(err) {
    28  		return false
    29  	}
    30  
    31  	return true
    32  }
    33  
    34  func ReadAllFile(filePath string) (string, error) {
    35  	file, err := os.Open(filePath)
    36  	if err != nil {
    37  		return "", err
    38  	}
    39  
    40  	data, err := ioutil.ReadAll(file)
    41  	if err != nil {
    42  		return "", err
    43  	}
    44  
    45  	return string(data), nil
    46  }
    47  
    48  func WriteFile(filePath string, content []byte) error {
    49  	fh, err := os.OpenFile(filePath, os.O_TRUNC|os.O_RDWR|os.O_CREATE, os.ModePerm)
    50  	if err != nil {
    51  		return err
    52  	}
    53  	defer fh.Close()
    54  
    55  	_, err = fh.Write(content)
    56  	if err != nil {
    57  		return err
    58  	}
    59  
    60  	return nil
    61  }
    62  
    63  func AbsolutePath(Datadir string, filename string) string {
    64  	if path.IsAbs(filename) {
    65  		return filename
    66  	}
    67  	return path.Join(Datadir, filename)
    68  }