自动化测试
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

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
}