63 Star 181 Fork 3

Gitee 极速下载 / hyperledger-fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/hyperledger/fabric
克隆/下载
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)
}
}
Go
1
https://gitee.com/mirrors/hyperledger-fabric.git
git@gitee.com:mirrors/hyperledger-fabric.git
mirrors
hyperledger-fabric
hyperledger-fabric
v2.1.1

搜索帮助

53164aa7 5694891 3bd8fe86 5694891