如何读取文件作为输入并在Golang中使用其内容?

gab6jxml  于 2023-06-19  发布在  Go
关注(0)|答案(2)|浏览(157)

有人能告诉我如何读取文本文件(.txt)作为输入并使用其内容吗?
必须运行此命令:
go run script.go < file.txt
找不到任何可以帮助我,即使在互联网上的许多研究!
先谢了
⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀ ⠀

t1qtbnec

t1qtbnec1#

可以从stdin读取。当你使用'<'时,它简单地表示STDIN。要在Go中读取STDIN,您需要使用os.Stdin预打开的文件描述符。
这段代码应该可以工作:

package main

import (
    "bufio"
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    const readBufLen = 1024
    reader := bufio.NewReader(os.Stdin)
    readBuf := make([]byte, readBufLen)
    content := make([]byte, 0, readBufLen)
    for {
        n, err := reader.Read(readBuf)
        if err != nil && err != io.EOF {
            log.Fatal(err)
        }
        if n != 0 {
            content = append(content, readBuf[:n]...)
        }
        if err == io.EOF {
            break
        }
    }

    fmt.Printf("%s\n", content)
}
1cosmwyk

1cosmwyk2#

使用io.ReadAll将os.Stdin的内容输出到[]byte
根据应用程序的要求,使用切片表达式忽略stdin的前两个字节

package main

import (
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    p, err := io.ReadAll(os.Stdin)
    if err != nil {
        log.Fatal(err)
    }

    // remove first two bytes per application requirements.
    if len(p) >= 2 {
        p = p[2:]
    }

    s := string(p)
    fmt.Println(s)
}

相关问题