init
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
//go:build windows
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
// windows 下全路径的字符数上限,留几个字符给后面追加的扩展名
|
||||
const maxPathRunes = 250
|
||||
|
||||
// 转换文件名和限制文件名长度,添加保存文件夹的路径
|
||||
func transFilename(filename string) string {
|
||||
// 转换文件名不允许的特殊字符
|
||||
re := regexp.MustCompile(`[<>:"/\\|?*\r\n]`)
|
||||
filename = re.ReplaceAllString(filename, "-")
|
||||
dir := recordingDir()
|
||||
outFilename := filepath.Join(dir, filename)
|
||||
if utf8.RuneCountInString(outFilename) <= maxPathRunes {
|
||||
return outFilename
|
||||
}
|
||||
|
||||
// 路径过长时截断文件名而不是直接放弃录制
|
||||
keep := maxPathRunes - utf8.RuneCountInString(dir) - 2
|
||||
if keep < 10 {
|
||||
lPrintErrf("保存文件夹的路径太长,无法生成文件名:%s", dir)
|
||||
return ""
|
||||
}
|
||||
runes := []rune(filename)
|
||||
if len(runes) > keep {
|
||||
runes = runes[:keep]
|
||||
}
|
||||
outFilename = filepath.Join(dir, string(runes))
|
||||
lPrintWarnf("文件名过长,已截断为 %s", filepath.Base(outFilename))
|
||||
return outFilename
|
||||
}
|
||||
Reference in New Issue
Block a user