登录
首页 >  Golang >  Go问答

获取 Dos (8.3) 文件名

来源:stackoverflow

时间:2024-04-09 23:12:27 431浏览 收藏

今天golang学习网给大家带来了《获取 Dos (8.3) 文件名》,其中涉及到的知识点包括等等,无论你是小白还是老手,都适合看一看哦~有好的建议也欢迎大家在评论留言,若是看完有所收获,也希望大家能多多点赞支持呀!一起加油学习~

问题内容

我有一个目录,其文件名包含“有趣”字符。我想获取这些文件的 dos (8.3) 文件名。我怎样才能做到这一点?我选择的语言是 go。

C:\...\foo>dir /x
 Volume in Laufwerk C: hat keine Bezeichnung.
 Volumeseriennummer: 329F-C2FE

 Verzeichnis von C:\...\foo

29.09.2018  16:22                           .
29.09.2018  16:22                           ..
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

(我将使用此文件名打开文件进行读取。)


解决方案


我已经找到了解决方案,但它并没有真正帮助我。 (请参阅@eryksun 的评论/警告)

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
        }
    }
}

终于介绍完啦!小伙伴们,这篇关于《获取 Dos (8.3) 文件名》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>