beancount-gs/script/file.go

95 lines
2.0 KiB
Go

package script
import (
"io/ioutil"
"os"
)
func FileIfExist(filePath string) bool {
_, err := os.Stat(filePath)
if nil != err {
return false
}
if os.IsNotExist(err) {
return false
}
return true
}
func ReadFile(filePath string) ([]byte, error) {
content, err := ioutil.ReadFile(filePath)
if nil != err {
LogSystemError("Failed to read file (" + filePath + ")")
return content, err
}
LogSystemInfo("Success read file (" + filePath + ")")
return content, nil
}
func WriteFile(filePath string, content string) error {
err := ioutil.WriteFile(filePath, []byte(content), 0777)
if err != nil {
LogSystemError("Failed to write file (" + filePath + ")")
return err
}
LogSystemInfo("Success write file (" + filePath + ")")
return nil
}
func AppendFileInNewLine(filePath string, content string) error {
content = "\r\n" + content
file, err := os.OpenFile(filePath, os.O_APPEND, 0644)
if err == nil {
_, err = file.WriteString(content)
if err != nil {
LogSystemError("Failed to append file (" + filePath + ")")
return err
}
}
defer file.Close()
LogSystemInfo("Success append file (" + filePath + ")")
return nil
}
func CreateFile(filePath string) error {
f, err := os.Create(filePath)
if nil != err {
LogSystemError(filePath + " create failed")
return err
}
defer f.Close()
LogSystemInfo("Success create file " + filePath)
return nil
}
func CopyFile(sourceFilePath string, targetFilePath string) error {
if !FileIfExist(sourceFilePath) {
panic("File is not found, " + sourceFilePath)
}
if !FileIfExist(targetFilePath) {
err := CreateFile(targetFilePath)
if err != nil {
return err
}
}
bytes, err := ReadFile(sourceFilePath)
if err != nil {
return err
}
err = WriteFile(targetFilePath, string(bytes))
if err != nil {
return err
}
return nil
}
func MkDir(dirPath string) error {
err := os.MkdirAll(dirPath, os.ModePerm)
if nil != err {
LogSystemError("Failed mkdir " + dirPath)
return err
}
LogSystemInfo("Success mkdir " + dirPath)
return nil
}