You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
4.3 KiB
161 lines
4.3 KiB
package file
|
|
|
|
import (
|
|
"io"
|
|
"io/fs"
|
|
"io/ioutil"
|
|
"os"
|
|
)
|
|
|
|
/****************************************************************************
|
|
* Function Name : Exist
|
|
* Description : 判断所给出的文件夹/文件是否存在
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
****************************************************************************/
|
|
func Exist(path string) bool {
|
|
_, err := os.Stat(path)
|
|
if err != nil {
|
|
return os.IsExist(err)
|
|
}
|
|
return true
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Function Name : IsDir
|
|
* Description : 判断所给出的路径是否是文件夹
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
****************************************************************************/
|
|
func IsDir(path string) bool {
|
|
s, err := os.Stat(path)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return s.IsDir()
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Function Name : IsFile
|
|
* Description : 判断所给出的路径是否是普通文件
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
****************************************************************************/
|
|
func IsFile(path string) bool {
|
|
return !IsDir(path)
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Function Name : MkdirAll
|
|
* Description : 创建文件夹
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
****************************************************************************/
|
|
func MkdirAll(path string) bool {
|
|
if !Exist(path) {
|
|
if os.MkdirAll(path, os.ModePerm) != nil {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Function Name : ReadFloderFiles
|
|
* Description : 读取文件夹下的所有文件信息
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
****************************************************************************/
|
|
func ReadFloderFiles(path string) []fs.FileInfo {
|
|
var fileinfos []fs.FileInfo
|
|
var err error
|
|
fileinfos, err = ioutil.ReadDir(path)
|
|
if err != nil {
|
|
return fileinfos
|
|
}
|
|
return fileinfos
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Function Name : ReadFileAll
|
|
* Description : 读取文件内容
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
* Note : 读取小文件,不建议读取超大文件
|
|
****************************************************************************/
|
|
func ReadFileAll(path string) (string, error) {
|
|
|
|
f, err := os.Open(path)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer f.Close()
|
|
str, err := ioutil.ReadAll(f)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(str), nil
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Function Name : ReadFile
|
|
* Description : 读取文件内容
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
* Note : 读取小文件,不建议读取超大文件(一般文件建议使用这个函数)
|
|
****************************************************************************/
|
|
func ReadFile(path string) (string, error) {
|
|
data, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(data), nil
|
|
}
|
|
func ReadFileByte(path string) ([]byte, error) {
|
|
data, err := ioutil.ReadFile(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return data, nil
|
|
}
|
|
|
|
/****************************************************************************
|
|
* Function Name : ReadBigFiles
|
|
* Description : 逐行
|
|
* Input : path 路径
|
|
* Output : None
|
|
* Return : None
|
|
* Note : 这只是个例子
|
|
****************************************************************************/
|
|
func ReadBigFiles__(path string) error {
|
|
f, err := os.Open(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
buf := make([]byte, 1024)
|
|
for {
|
|
n, err := f.Read(buf)
|
|
// 控制条件,根据实际调整
|
|
if err != nil && err != io.EOF {
|
|
return err
|
|
}
|
|
if n == 0 {
|
|
break
|
|
}
|
|
// 如下代码打印出每次读取的文件块(字节数)
|
|
//fmt.Println(string(buffer[:n]))
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func DeleteFloder(path string) bool {
|
|
return os.Remove(path) == nil
|
|
}
|
|
|