1 Star 1 Fork 1

xiaoyutab / xgotool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
file2type.go 2.19 KB
一键复制 编辑 原始数据 按行查看 历史
package xcmd
import (
"strings"
)
// 获取文件类型
//
// path 文件路径
//
// uint8返回类型确定:
// 0-未知 1-目录 2-Linux可执行程序 3-Linux下超链接 4-Linux Socket文件 5-Windows 可执行程序
// 10-JPEG图片文件 11-PNG图片文件 12-WEBP格式图片 13-GIF格式图片 14-BMP位图 15-TIFF格式图片 19-未知格式图片文件
// 20-ASCII编码的文本文件 21-UTF-8编码的文本文件 29-未知格式文本文件
// 31-7Z压缩文件 32-ZIP压缩文件 39-未知压缩文件
// 41-PDF文档 42-Word文档 43-Excel文档 44-PPT文档
func File2type(path string) (uint8, error) {
if err := CheckCommand("file"); err != nil {
return 0, err
}
cmd, err := Exec(GetCommand("file"), path)
if err != nil {
return 0, err
}
cmd = strings.TrimSpace(strings.Split(cmd, ":")[1])
if cmd == "directory" {
return 1, nil
}
// 常见文件的类型
headers := map[string]uint8{
"ELF": 2, // Linux可执行程序
"symbolic link": 3, // Linux超链接
"socket": 4, // Linux Socket文件
"PE32": 5, // Windows 可执行程序
"JPEG": 10, // JPEG图片文件
"PNG": 11, // PNG图片文件
"GIF": 13, // GIF格式图片
"TIFF": 15, // TIFF格式图片
"ASCII": 20, // ASCII编码的文本文件
"UTF-8": 21, // UTF-8编码的文本文件
"7-zip": 31, // 7Z压缩文件
"Zip": 32, // ZIP压缩文件
"PDF": 41, // PDF文档
"Microsoft Word": 42, // Word文档
"Microsoft Excel": 43, // Excel文档
"Microsoft PowerPoint": 44, // PPT文档
}
for i, v := range headers {
if len(cmd) > len(i) && cmd[0:len(i)] == i {
return v, nil
}
}
// 不常见文件类型【依靠字符串搜索来确定是文本/图片等类型文件】
headers = map[string]uint8{
"text": 29, //文本文件
"image": 19, // 图片文件
"archive": 39, // 压缩文件
"Web/P image": 12, // WEBP格式图片
"PC bitmap": 14, // BMP位图
}
for i, v := range headers {
if strings.Contains(cmd, i) {
return v, nil
}
}
return 0, nil
}
Go
1
https://gitee.com/xiaoyutab/xgotool.git
git@gitee.com:xiaoyutab/xgotool.git
xiaoyutab
xgotool
xgotool
v0.3.13

搜索帮助