在實際工作總很多時候,我們會經常用到導入txt文件,下面是一些簡單的例子,僅供參考。
新建一個demo.txt文件,文件內容是:
1#張三 2#李四
按行讀取文件內容
func main() { f, err := os.Open("demo.txt") if err != nil { fmt.Println("err:", err) return } defer f.Close() content, err := readTxt(f) if err != nil { fmt.Println("err:", err) return } fmt.Println("content:", content) } func readTxt(r io.Reader) ([]string, error) { reader := bufio.NewReader(r) l := make([]string, 0, 64) // 按行讀取 for { line, _, err := reader.ReadLine() if err != nil { if err == io.EOF { break } else { return nil, err } } l = append(l, strings.Trim(string(line), " ")) } return l, nil }
輸出結果:content: [1#張三 2#李四]
按行讀取的第二種方式:
可以把 for 循環里的 reader.ReadLine() 替換成 r.ReadBytes('\n') 表示遇到 “\n” 就結束讀取,這里要注意的是 “\n” 也會被讀取到行內容,可以通過 strings.Replace 進行替換(strings.Replace(string(buf), "\n", "", 1))。
一次性讀取 txt 文件全部內容
以下讀取全部文件內容也可以使用 ioutil.ReadFile 方法
func main() { f, err := os.Open("demo.txt") if err != nil { fmt.Println("err:", err) return } defer f.Close() content, err := readAllContent(f) if err != nil { fmt.Println("err:", err) return } fmt.Println("content:", content) } func readAllContent(r io.Reader) ([]string, error) { var b = make([]byte, 4096) _, err := r.Read(b) if err != nil { return nil, err } l := strings.Split(string(b), "\r\n") return l, nil }
輸出結果:content: [1#張三 2#李四]