Go语言获取文件的文件路径、文件名、扩展名

  1. 引入包
import (
	"fmt"
	"path/filepath"
	"path"
)

  1. 获取路径中的目录及文件名
files := "E:\\data\\test.txt"
paths, fileName := filepath.Split(files)
fmt.Println(paths, fileName)

# 输出结果为:E:\data\ test.txt

  1. 获取路径中的文件名
files := "E:\\data\\test.txt"
fmt.Println(filepath.Base(files))

# 输出结果为:test.txt

  1. 获取路径中的文件扩展名
files := "E:\\data\\test.txt"
fmt.Println(path.Ext(files))

#输出结果为:.txt
#注意这里是.txt,还有个点

文件类型识别库
第三方优秀开源库

[https://github.com/gabriel-vasile/mimetype](https://github.com/gabriel-vasile/mimetype)
func FileDetectV2(name string) {
	//mtype := mimetype.Detect([]byte)
	// OR
	//mtype, err := mimetype.DetectReader(io.Reader)
	// OR
	mtype, err := mimetype.DetectFile(name)
	if err != nil {
		fmt.Println(err)
		return
	}

	t := mtype.String()
	e := mtype.Extension()
	fmt.Println("mtype.String()=", t)
	fmt.Println("mtype.Extension()=", e)
}

func TestFileDetectV2(t *testing.T) {
	FileDetectV2("example.mp3")
	FileDetectV2("1.4.16.bin")
	FileDetectV2("devices-import.xlsx")

	// 输出
	//mtype.String()= audio/mpeg
	//mtype.Extension()= .mp3
	//mtype.String()= application/octet-stream
	//mtype.Extension()=
	//mtype.String()= application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
	//mtype.Extension()= .xlsx
}