我收到一个错误,我不知道是什么原因。当我 运行 程序时文件消失
I get an error that I don't know for what reason. a file disappears when I run the program
我正在用 Go 编写代码,我创建了一个文件处理程序和一个打印该文件值的程序。
但是,当我 运行 时,应该用 file.Filename 创建的文件被删除了。
不知道是什么原因,试了debug也出不了答案,google试了也得不到答案。
(64 位 windows 10 (WSL2))
package main
import (
"fmt"
"io"
"io/ioutil"
"os"
"github.com/labstack/echo"
)
func checkErr(err error) {
if err != nil {
panic(err)
}
}
func readFile(filename string) string {
data, err := ioutil.ReadFile(filename)
checkErr(err)
return string(data)
}
func main() {
e := echo.New()
e.POST("/file", func(c echo.Context) error {
file, err := c.FormFile("file")
checkErr(err)
src, err := file.Open()
checkErr(err)
defer src.Close()
dst, err := os.Create(file.Filename)
checkErr(err)
defer dst.Close()
_, err = io.Copy(dst, src)
checkErr(err)
data := readFile(file.Filename)
fmt.Println(data)
return c.String(200, "sd")
})
e.Logger.Fatal(e.Start(":5000"))
}
我猜您的文件存在,但是您编写的代码正在读取更改 "flushed to disk".
之前的文件
就在这里:
defer dst.Close()
_, err = io.Copy(dst, src)
应该Close()
或Sync()
你的作家尽快,否则你可能会在写完之前阅读。由于您的 readFile()
函数没有重新使用该文件,您最好立即关闭(而不是 Sync()
)它,而不是延迟
试试这个:
_, err = io.Copy(dst, src)
dst.Close()
if err != nil {
}
复制时可能出错,但我们仍想关闭() 文件(如果在 os.Create
、 os.Open,
或 os.OpenFile
期间没有出错...
我正在用 Go 编写代码,我创建了一个文件处理程序和一个打印该文件值的程序。
但是,当我 运行 时,应该用 file.Filename 创建的文件被删除了。
不知道是什么原因,试了debug也出不了答案,google试了也得不到答案。
(64 位 windows 10 (WSL2))
package main
import (
"fmt"
"io"
"io/ioutil"
"os"
"github.com/labstack/echo"
)
func checkErr(err error) {
if err != nil {
panic(err)
}
}
func readFile(filename string) string {
data, err := ioutil.ReadFile(filename)
checkErr(err)
return string(data)
}
func main() {
e := echo.New()
e.POST("/file", func(c echo.Context) error {
file, err := c.FormFile("file")
checkErr(err)
src, err := file.Open()
checkErr(err)
defer src.Close()
dst, err := os.Create(file.Filename)
checkErr(err)
defer dst.Close()
_, err = io.Copy(dst, src)
checkErr(err)
data := readFile(file.Filename)
fmt.Println(data)
return c.String(200, "sd")
})
e.Logger.Fatal(e.Start(":5000"))
}
我猜您的文件存在,但是您编写的代码正在读取更改 "flushed to disk".
之前的文件就在这里:
defer dst.Close()
_, err = io.Copy(dst, src)
应该Close()
或Sync()
你的作家尽快,否则你可能会在写完之前阅读。由于您的 readFile()
函数没有重新使用该文件,您最好立即关闭(而不是 Sync()
)它,而不是延迟
试试这个:
_, err = io.Copy(dst, src)
dst.Close()
if err != nil {
}
复制时可能出错,但我们仍想关闭() 文件(如果在 os.Create
、 os.Open,
或 os.OpenFile
期间没有出错...