Files
leanote/app/lea/File.go

190 lines
3.5 KiB
Go
Raw Normal View History

2014-05-07 13:06:24 +08:00
package lea
import (
2014-09-19 17:18:53 +08:00
"io"
2014-11-09 16:24:19 +08:00
"io/ioutil"
"os"
"path/filepath"
"strings"
2014-05-07 13:06:24 +08:00
)
// 分离文件名与扩展名(包含.)
func SplitFilename(filename string) (baseName, ext string) {
baseName = filename
// 找到最后一个'.'
ext = SubstringByte(filename, strings.LastIndex(filename, "."))
baseName = strings.TrimRight(filename, ext)
ext = strings.ToLower(ext)
2014-11-09 16:24:19 +08:00
return
2014-05-07 13:06:24 +08:00
}
// 转换文件的格式
// toExt包含.
func TransferExt(path string, toExt string) string {
2014-11-09 16:24:19 +08:00
dir := filepath.Dir(path) + "/" // 文件路径
name := filepath.Base(path) // 文件名 a.jpg
2014-05-07 13:06:24 +08:00
// 获取文件名与路径
baseName, _ := SplitFilename(name)
return dir + baseName + toExt
}
func GetFilename(path string) string {
return filepath.Base(path)
}
// file size
// length in bytes
func GetFilesize(path string) int64 {
fileinfo, err := os.Stat(path)
if err == nil {
return fileinfo.Size()
}
2014-11-09 16:24:19 +08:00
return 0
}
2014-05-07 13:06:24 +08:00
// 清空dir下所有的文件和文件夹
// RemoveAll会清空本文件夹, 所以还要创建之
func ClearDir(dir string) bool {
err := os.RemoveAll(dir)
if err != nil {
return false
}
err = os.MkdirAll(dir, 0777)
if err != nil {
return false
}
return true
}
func MkdirAll(dir string) bool {
err := os.MkdirAll(dir, 0777)
if err != nil {
return false
}
return true
}
// list dir's all file, return filenames
func ListDir(dir string) []string {
f, err := os.Open(dir)
if err != nil {
return nil
}
names, _ := f.Readdirnames(0)
return names
2014-09-19 17:18:53 +08:00
}
func CopyFile(srcName, dstName string) (written int64, err error) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dst, err := os.OpenFile(dstName, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return
}
defer dst.Close()
return io.Copy(dst, src)
2014-10-22 16:20:45 +08:00
}
2014-11-09 16:24:19 +08:00
func CopyDir(source string, dest string) (err error) {
// get properties of source dir
sourceinfo, err := os.Stat(source)
if err != nil {
return err
}
// create dest dir
err = os.MkdirAll(dest, sourceinfo.Mode())
if err != nil {
return err
}
directory, _ := os.Open(source)
objects, err := directory.Readdir(-1)
for _, obj := range objects {
sourcefilepointer := source + "/" + obj.Name()
destinationfilepointer := dest + "/" + obj.Name()
if obj.IsDir() {
// create sub-directories - recursively
err = CopyDir(sourcefilepointer, destinationfilepointer)
if err != nil {
2015-11-13 17:58:41 +08:00
// fmt.Println(err)
2014-11-09 16:24:19 +08:00
}
} else {
// perform copy
_, err = CopyFile(sourcefilepointer, destinationfilepointer)
if err != nil {
2015-11-13 17:58:41 +08:00
// fmt.Println(err)
2014-11-09 16:24:19 +08:00
}
}
}
return
}
func DeleteFile(path string) bool {
err := os.Remove(path)
if err != nil {
return false
}
return true
}
2014-10-22 16:20:45 +08:00
func IsDirExists(path string) bool {
2014-11-09 16:24:19 +08:00
fi, err := os.Stat(path)
if err != nil {
return os.IsExist(err)
} else {
return fi.IsDir()
}
return false
}
// 获得文件str内容
func GetFileStrContent(path string) string {
fileBytes, err := ioutil.ReadFile(path)
if err != nil {
return ""
}
return string(fileBytes)
}
func IsFileExist(filename string) bool {
var exist = true
if _, err := os.Stat(filename); os.IsNotExist(err) {
exist = false
}
return exist
}
// 写入string内容
func PutFileStrContent(path, content string) bool {
var f *os.File
var err1 error
defer (func() {
if f != nil {
f.Close()
}
})()
f, err1 = os.OpenFile(path, os.O_RDWR|os.O_TRUNC|os.O_CREATE, 0666) //打开文件
// Log(err1)
// var n int
_, err1 = io.WriteString(f, content) //写入文件(字符串)
// Log(content)
// Log(err1)
// Log(n)
// Log(path)
if err1 != nil {
return false
}
return true
}