我有一个目录,其文件名包含“有趣”字符。我想获取文件的 DOS (8.3) 文件名。我怎样才能做到这一点?我选择的语言是 Go。C:\...\foo>dir /x Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: 329F-C2FE Verzeichnis von C:\...\foo29.09.2018 16:22 <DIR> .29.09.2018 16:22 <DIR> ..23.07.2009 01:52 5.526 CW9463~1.PDF cöw.pdf 1 Datei(en), 1.922.706 Bytes 0 Verzeichnis(se), 48.235.646.976 Bytes frei我想获取CW9463~1.PDF文件名而不是cöw.pdf.(我将使用此文件名打开文件进行阅读。)
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
我找到了解决方案,但它并没有真正帮助我。
import (
"golang.org/x/sys/windows"
)
func GetShortPathName(name string) (path string, err error) {
lp, err := windows.UTF16PtrFromString(name)
if err != nil {
return "", err
}
n := uint32(100)
for {
buf := make([]uint16, n)
n, err = windows.GetShortPathName(lp, &buf[0], uint32(len(buf)))
if err != nil {
return "", err
}
if n <= uint32(len(buf)) {
return windows.UTF16ToString(buf[:n]), nil
}
}
}
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报
0/150
提交
取消