golang os.Create 导致“没有这样的文件或目录”错误

Bru*_*uce 5 file go

一定很简单,但我似乎无法弄清楚。我不断收到“没有这样的文件或目录”错误。以为 Create 功能是创建一个新文件?

package main

import (
    "log"
    "os"
)

func main() {
    f, err := os.Create("~/golang-server.log")
    defer f.Close()
    if err != nil {
        panic(err.Error())
    }
    log.SetOutput(f)
}
Run Code Online (Sandbox Code Playgroud)

shi*_*zhz 5

您不能使用~or 环境变量$HOME来指定文件路径,它们是字符串文字,表示实际路径。你得到的错误是因为它被~/golang-server.log视为当前目录的相对路径,并且当前目录中没有~目录。

使用手动创建的子目录~,您的代码将成功:

? ~/test/ mkdir \~
? ~/test/ go run t.go
? ~/test/ ls \~
golang-server.log
Run Code Online (Sandbox Code Playgroud)

所以需要传递一个absolute pathorrelative pathos.Create.