在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
go 文件读写有很多方式 ioutil读文件 package main import ( "io/ioutil" "fmt" ) func main() { data,err := ioutil.ReadFile("a.txt") #这里返回的data是一个字节切片 if err!=nil{ fmt.Println("File reading error", err) } fmt.Println(string(data)) } ioutil写文件 package main import ( "io/ioutil" ) func main() { content := "hello world!" ioutil.WriteFile("a.txt",[]byte(content),0777) //如果文件a.txt已经存在那么会忽略权限参数,清空文件内容。文件不存在会创建文件赋予权限 } 使用os包打开文件 //open函数 func Open(name string) (file *File, err error) Open打开一个文件用于读取。如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有O_RDONLY模式。如果出错,错误底层类型是*PathError。 package main import ( _"io/ioutil" "os" "fmt" ) func main() { f,_ := os.Open("a.txt") defer f.Close() data := make([]byte, 100) count,_ :=f.Read(data) fmt.Print(string(data[:count])) } //openfile函数 func OpenFile(name string, flag int, perm FileMode) (file *File, err error) OpenFile是一个更一般性的文件打开函数,大多数调用者都应用Open或Create代替本函数。它会使用指定的选项(如O_RDONLY等)、指定的模式FileMode(如0666,即可读写,但是不可执行)
将文件绑定在二进制文件中
package main import ( "fmt" "github.com/gobuffalo/packr" ) func main() { box := packr.NewBox("../a.txt") data := box.String("test.txt") fmt.Println("Contents of file:", data) } 逐行读取文件 package main import ( "bufio" "flag" "fmt" "log" "os" ) func main() { //fptr := flag.String("fpath", "test.txt", "file path to read from") //flag.Parse() f, err := os.Open(“a.txt”) //因为bufio需要的是一个*os.File类型,所以我们换个方式读取,稍后再介绍一下 if err != nil { log.Fatal(err) } defer func() { if err = f.Close(); err != nil { log.Fatal(err) } }() s := bufio.NewScanner(f) for s.Scan() { fmt.Println(s.Text()) } err = s.Err() if err != nil { log.Fatal(err) } } 分块读取文件 当文件非常大时,尤其在 RAM 存储量不足的情况下,把整个文件都读入内存是没有意义的。更好的方法是分块读取文件。这可以使用 bufio包来完成。 package main import ( "bufio" "flag" "fmt" "log" "os" ) func main() { //fptr := flag.String("fpath", "test.txt", "file path to read from") //flag.Parse() f, err := os.Open("a.txt") if err != nil { log.Fatal(err) } defer func() { if err = f.Close(); err != nil { log.Fatal(err) } }() r := bufio.NewReader(f) b := make([]byte, 3) for { _, err := r.Read(b) if err != nil { fmt.Println("Error reading file:", err) break } fmt.Println(string(b)) } }
|
请发表评论