1 Star 0 Fork 0

妥協 / fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ioutil.go 2.44 KB
一键复制 编辑 原始数据 按行查看 历史
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package util
import (
"io"
"io/ioutil"
"os"
"path"
"strings"
"github.com/hyperledger/fabric/common/flogging"
"github.com/pkg/errors"
)
var logger = flogging.MustGetLogger("kvledger.util")
// CreateDirIfMissing creates a dir for dirPath if not already exists. If the dir is empty it returns true
func CreateDirIfMissing(dirPath string) (bool, error) {
// if dirPath does not end with a path separator, it leaves out the last segment while creating directories
if !strings.HasSuffix(dirPath, "/") {
dirPath = dirPath + "/"
}
logger.Debugf("CreateDirIfMissing [%s]", dirPath)
logDirStatus("Before creating dir", dirPath)
err := os.MkdirAll(path.Dir(dirPath), 0755)
if err != nil {
logger.Debugf("Error creating dir [%s]", dirPath)
return false, errors.Wrapf(err, "error creating dir [%s]", dirPath)
}
logDirStatus("After creating dir", dirPath)
return DirEmpty(dirPath)
}
// DirEmpty returns true if the dir at dirPath is empty
func DirEmpty(dirPath string) (bool, error) {
f, err := os.Open(dirPath)
if err != nil {
logger.Debugf("Error opening dir [%s]: %+v", dirPath, err)
return false, errors.Wrapf(err, "error opening dir [%s]", dirPath)
}
defer f.Close()
_, err = f.Readdir(1)
if err == io.EOF {
return true, nil
}
err = errors.Wrapf(err, "error checking if dir [%s] is empty", dirPath)
return false, err
}
// FileExists checks whether the given file exists.
// If the file exists, this method also returns the size of the file.
func FileExists(filePath string) (bool, int64, error) {
fileInfo, err := os.Stat(filePath)
if os.IsNotExist(err) {
return false, 0, nil
}
if err != nil {
return false, 0, errors.Wrapf(err, "error checking if file [%s] exists", filePath)
}
return true, fileInfo.Size(), nil
}
// ListSubdirs returns the subdirectories
func ListSubdirs(dirPath string) ([]string, error) {
subdirs := []string{}
files, err := ioutil.ReadDir(dirPath)
if err != nil {
return nil, errors.Wrapf(err, "error reading dir %s", dirPath)
}
for _, f := range files {
if f.IsDir() {
subdirs = append(subdirs, f.Name())
}
}
return subdirs, nil
}
func logDirStatus(msg string, dirPath string) {
exists, _, err := FileExists(dirPath)
if err != nil {
logger.Errorf("Error checking for dir existence")
}
if exists {
logger.Debugf("%s - [%s] exists", msg, dirPath)
} else {
logger.Debugf("%s - [%s] does not exist", msg, dirPath)
}
}
1
https://gitee.com/liurenhao/fabric.git
git@gitee.com:liurenhao/fabric.git
liurenhao
fabric
fabric
v2.1.1

搜索帮助