GoLang:阅读文件基础知识

时间:2015-08-05 21:09:23

标签: go

我只想尝试读取与实际程序位于同一目录中的简单文件。我不断得到这个奇怪的错误,而我的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

当我只使用静态名称而非标准输入时,它可以正常工作。对于该字符串中的标准方式,必须有一些奇怪的东西,然后尝试将其转换为文件路径。

1 个答案:

答案 0 :(得分:7)

f, err := reader.ReadString('\n')

这会读取\n的最新内容。因此,您的文件名为/foo.txt\n,但不存在。

如果您愿意,可以使用strings.Trim()拉出换行符。