gpt4 book ai didi

Golang 无法将文件写入目录

转载 作者:IT王子 更新时间:2023-10-29 02:02:57 27 4
gpt4 key购买 nike

情况:

我正在尝试将文件写入目录,如下所示:

func (p *Page) Save() error {
filepath := DerivePath(p.Title)
fmt.Println(filepath)
content, _ := json.MarshalIndent(p, "", " ")
err := ioutil.WriteFile(filepath, content, 0600)
return err
}

问题:

第5行出现如下错误:

open data/Testpage.json: The system cannot find the path specified.

  • 我已经尝试在使用 os.Create 写入之前创建该文件,但它也不起作用。
  • data 目录加载工作正常。仅将 文件写入目录失败。

附加信息:

我的项目结构如下:

│   .gitignore
│ .project

├───bin
│ main.exe

├───data
│ Welcome.json

├───pkg
│ └───windows_amd64
│ page.a

├───src
│ ├───main
│ │ main.go
│ │
│ └───page
│ page.go
│ page_test.go

└───templates
view.html

如上所述,阅读 data/Welcome.json 工作正常(通过使用 io/ioutils.ReadFile)。来源可在 https://gitlab.com/thyaris/Wiki 上找到.

执行 D:\GitWorkspaces\Wiki\wiki>go test -v page 写入以下输出:

=== RUN   TestSave
data/Testpage.json
--- FAIL: TestSave (0.00s)
page_test.go:15: open data/Testpage.json: The system cannot find the path specified.
page_test.go:19: 'Testpage.json' was not created
=== RUN TestLoadPage
--- FAIL: TestLoadPage (0.00s)
page_test.go:26: Error while loading
page_test.go:32: File content did not match
=== RUN TestDelete
--- PASS: TestDelete (0.00s)
FAIL
exit status 1
FAIL page 0.094s

最佳答案

您的问题是测试引擎没有在您期望的工作目录下运行您的可执行文件。它不是使用您的 shell 或 IDE 定义的工作目录,而是将其设置为被测试代码的源目录。 (很久以前我也被这个咬过一次:)我几乎忘记了那个......)

简单的解决方案是更改 DerivePath 以便您可以在外部设置前缀,然后将其更改为您在测试开始时需要的路径。当然还有其他(可能更好?)解决方案。

关于Golang 无法将文件写入目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45314609/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com