代码拉取完成,页面将自动刷新
/*
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)
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。