我只想尝试读取与实际程序位于同一目录中的简单文件。我不断得到这个奇怪的错误,而我的Go就是"正在出现" (正如他们所说)。
package main
import (
"bufio"
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
func check(e error) {
if e != nil {
panic(e)
}
}
func main() {
// Here's opening a flat file via the program.
// fn := " ... /foo.txt"
here, err := filepath.Abs(".")
check(err)
fmt.Println("------- DEBUG ------- ")
fmt.Println(here)
fmt.Println("------- DEBUG ------- ")
reader := bufio.NewReader(os.Stdin)
fmt.Print("Please Enter a File Name: ")
f, err := reader.ReadString('\n')
f = filepath.Join(here, f)
fmt.Println(f)
check(err)
dat, err := ioutil.ReadFile(f)
check(err)
fmt.Print(string(dat))
}
所以,这是一个奇怪的错误,我不断得到。
panic: open ... /foo.txt
: no such file or directory
goroutine 1 [running]:
main.check(0x22081c49a0, 0x2081ec240)
... /read.go:13 +0x50
main.main()
... /read.go:36 +0x6b0
exit status 2
当我只使用静态名称而非标准输入时,它可以正常工作。对于该字符串中的标准方式,必须有一些奇怪的东西,然后尝试将其转换为文件路径。
答案 0 :(得分:7)
f, err := reader.ReadString('\n')
这会读取\n
的最新内容。因此,您的文件名为/foo.txt\n
,但不存在。
如果您愿意,可以使用strings.Trim()
拉出换行符。