3 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
請(qǐng)查看io/ioutil您已經(jīng)在使用的軟件包文檔。
它有一個(gè)專門(mén)用于此的功能: ReadFile()
func ReadFile(filename string) ([]byte, error)
用法示例:
func main() {
// First element in os.Args is always the program name,
// So we need at least 2 arguments to have a file name argument.
if len(os.Args) < 2 {
fmt.Println("Missing parameter, provide file name!")
return
}
data, err := ioutil.ReadFile(os.Args[1])
if err != nil {
fmt.Println("Can't read file:", os.Args[1])
panic(err)
}
// data is the file content, you can use it
fmt.Println("File content is:")
fmt.Println(string(data))
}

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
首先檢查提供的參數(shù)。如果第一個(gè)參數(shù)滿足輸入文件的條件,則使用該ioutil.ReadFile方法,提供參數(shù)os.Args結(jié)果。
package main
import (
"fmt"
"os"
"io/ioutil"
)
func main() {
if len(os.Args) < 1 {
fmt.Println("Usage : " + os.Args[0] + " file name")
os.Exit(1)
}
file, err := ioutil.ReadFile(os.Args[1])
if err != nil {
fmt.Println("Cannot read the file")
os.Exit(1)
}
// do something with the file
fmt.Print(string(file))
}
另一種可能性是使用:
f, err := os.Open(os.Args[0])
但為此,您需要提供要讀取的字節(jié)長(zhǎng)度:
b := make([]byte, 5) // 5 is the length
n, err := f.Read(b)
fmt.Printf("%d bytes: %s\n", n, string(b))

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
為了通過(guò)輸入?yún)?shù)(例如 abc.txt)從命令行運(yùn)行 .go 文件。我們主要需要使用 os、io/ioutil、fmt 包。另外為了讀取命令行參數(shù),我們使用 os.Args這里是示例代碼
package main
import (
"fmt"
"os"
"io/ioutil"
)
func main() {
fmt.Println(" Hi guys ('-') ")
input_files := os.Args[1:]
//input_files2 := os.Args[0];
//fmt.Println("if2 : ",input_files2)
if len(input_files) < 1{
fmt.Println("Not detected files.")
}else{
fmt.Println("File_name is : ",input_files[0])
content, err := ioutil.ReadFile(input_files[0])
if err != nil {
fmt.Println("Can't read file :", input_files[0],"Error : ",err)
}else {
fmt.Println("Output file content is(like string type) : \n",string(content))//string Output
fmt.Println("Output file content is(like byte type) : \n",content)//bytes Output
}
}
}
Args 保存命令行參數(shù),包括作為 Args[0] 的命令。如果 Args 字段為空或?yàn)榱悖瑒t Run 使用 {Path}。在典型的使用中,Path 和 Args 都是通過(guò)調(diào)用 Command 來(lái)設(shè)置的。參數(shù) [] 字符串函數(shù)。此函數(shù)返回字符串類型的數(shù)組https://golang.org/pkg/os/exec/ .Args 保存命令行參數(shù),從程序名稱開(kāi)始。在這種情況下,從命令行獲取文件名的簡(jiǎn)短方法是這個(gè)函數(shù)os.Args[1:]。這是輸出
elshan_abd$ go run main.go abc.txt
Hi guys ('-')
File_name is : abc.txt
Output file content is(like string type) :
aaa
bbb
ccc
1234
Output file content is(like byte type) :
[97 97 97 10 98 98 98 10 99 99 99 10 49 50 51 52 10]
最后我們需要讀取內(nèi)容文件這個(gè)函數(shù) func ReadFile(filename string) ([]byte, error) 源是 https://golang.org/pkg/io/ioutil/#ReadFile
- 3 回答
- 0 關(guān)注
- 340 瀏覽
添加回答
舉報(bào)