package utils import ( "errors" "io/ioutil" "os" "os/exec" "path/filepath" ) const ( FILE_OPEN_TYPE_READ int = 0 FILE_OPEN_TYPE_WRITE int = 1 FILE_OPEN_TYPE_APPEND int = 2 ) // ReadTextFile 读取文件 func ReadTextFile(path string) string { fp, err := os.Open(path) if nil != err { return "" } defer fp.Close() d, err := ioutil.ReadAll(fp) if nil != err { return "" } return string(d) } /* * 读取配置文件 */ func ReadConfFile(file string) string { return ReadTextFile(GetConfPath(file)) } // 获取配置文件路径 func GetConfPath(fname string) string { // 绝对路径 if len(fname) > 2 && ('/' == fname[0] || ':' == fname[1]) { return fname } return GetFilePathBaseExe("./" + fname) } // 以exe为根节点获取文件路径 func GetFilePathBaseExe(fname string) string { // 绝对路径 if len(fname) > 2 && ('/' == fname[0] || ':' == fname[1]) { return fname } // 相对路径 file, _ := exec.LookPath(os.Args[0]) return filepath.Join(filepath.Dir(file), fname) } // 创建目录 func CreateDir(dirName string) error { // 判断目录是否存在 if _, err := os.Stat(dirName); false == os.IsNotExist(err) { return nil } // 分解上层目录 pdir := filepath.Dir(dirName) if "" == pdir { return errors.New("error dir format") } // 判断目录是否存在 if _, err := os.Stat(pdir); os.IsNotExist(err) { err = CreateDir(pdir) if nil != err { return err } } return os.Mkdir(dirName, 0755) }