我想通过将文件名作为用户输入来读取文件

我有一个名为 example.json 的 JSON 文件。我需要通过将其名称作为用户输入来读取该文件。我尝试过下面的代码。


func main() {

    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter text: ")

    text,_ := reader.ReadString('\n')



    fmt.Println(text)


    file,_ := ioutil.ReadFile(text)

    // os.Exit()

    fmt.Print(file)

}

但它不能正常工作。我想将 JSON 文件名作为命令行输入并读取 JSON 文件。


我用下面的方法检查了。但与我的情况不符。


reader.ReadString 不会删除第一次出现的 delim


天涯尽头无女友
浏览 121回答 2
2回答

紫衣仙女

首先要事。如果您正确处理错误,您就可以找出代码不起作用的原因。您忽略了调用时引发的错误iotuil.ReadFile(text)。只需添加适当的治疗,您就会清楚为什么它不起作用file, err := ioutil.ReadFile(text) if err != nil {     log.Fatal(err) }: 没有这样的文件或目录您的程序无法运行的原因可能是因为您的变量中有换行符text。“ ReadString 读取直到输入中第一次出现 delim,返回包含分隔符之前的数据的字符串。 ”从保存用户输入的变量中删除类似中断的字符,它应该可以工作,假设输入实际上与现有文件(包括其正确的路径)匹配。func main() {    reader := bufio.NewReader(os.Stdin)    fmt.Print("Enter text: ")    text, _ := reader.ReadString('\n')    text = strings.TrimSuffix(text, "\n")    //Add the file path    //or else the user will be required to enter the entire file location    f := "path_to_the_file" + text     file, err := ioutil.ReadFile(f)    if err != nil {        log.Fatal(err)    }    fmt.Println(string(file))}

慕的地6264312

在这种情况下,我认为你最好进行简单的扫描:var namefile stringfmt.Scan(&namefile)content, err := ioutil.ReadFile(namefile)if err != nil {    log.Fatal(err)}而不是添加一个\n然后将其删除。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go