Golang中如何获取Windows完整路径

Golang中如何获取Windows完整路径 如何在Golang中正确访问zip文件?

r, err := zip.OpenReader("C:\Users\rob66\Downloads\365817059X.zip")

提前感谢。

3 回复

成功了!非常感谢。

更多关于Golang中如何获取Windows完整路径的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你有两种选择,要么通过双写反斜杠来转义它们,要么使用统一的路径分隔符(即斜杠),从 Windows 7 开始,Windows 系统已经能够识别后者。

在Golang中获取Windows完整路径并正确访问zip文件时,需要注意Windows路径分隔符的转义问题。你提供的代码中使用了\作为路径分隔符,但在Go字符串中\是转义字符,需要正确转义。

以下是修正后的代码示例:

package main

import (
    "archive/zip"
    "fmt"
    "log"
)

func main() {
    // 方法1: 使用双反斜杠转义
    r, err := zip.OpenReader("C:\\Users\\rob66\\Downloads\\365817059X.zip")
    if err != nil {
        log.Fatal(err)
    }
    defer r.Close()
    
    // 遍历zip文件中的文件
    for _, f := range r.File {
        fmt.Printf("文件名: %s\n", f.Name)
    }
    
    // 方法2: 使用原始字符串字面量(推荐)
    r2, err := zip.OpenReader(`C:\Users\rob66\Downloads\365817059X.zip`)
    if err != nil {
        log.Fatal(err)
    }
    defer r2.Close()
}

或者,你也可以使用filepath包来构建跨平台兼容的路径:

package main

import (
    "archive/zip"
    "path/filepath"
    "log"
)

func main() {
    // 使用filepath构建路径
    zipPath := filepath.Join("C:", "Users", "rob66", "Downloads", "365817059X.zip")
    
    r, err := zip.OpenReader(zipPath)
    if err != nil {
        log.Fatal(err)
    }
    defer r.Close()
    
    // 处理zip文件内容
    for _, f := range r.File {
        log.Printf("找到文件: %s", f.Name)
    }
}

关键点:

  • 在普通字符串中,Windows路径需要用\\来表示单个\
  • 使用反引号`创建原始字符串字面量可以避免转义问题
  • filepath.Join()方法可以创建跨平台兼容的路径

这些方法都能正确访问Windows系统中的zip文件。

回到顶部