go语言读写文件有好几种库,网上文章比较乱,混用了几个库。今天仅用os库来读写文件试试。
写文件
首先,用os.OpenFile()
来打开文件,得到文件句柄*File
。再用f.Write([]byte)
和f.WriteString(string)
来写入字符串。最后关闭文件f.Close()
。
package main
import (
"os"
"fmt"
)
func main(){
f, err := os.OpenFile("test.txt", os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
fmt.Print(err)
}
f.Write([]byte("Hello\n"))
f.WriteString("abc123\n123456\n")
f.Close()
}
运行后,输出内容如下:
> cat test.txt
Hello
abc123
123456
读文件
首先,用os.OpenFile()
来打开文件,得到文件句柄*File
。创建10个byte的buf,用f.Read(buf)
读文件,循环读,每次读10个字节,直到返回读出字节数n = 0,表明已到文件末尾。拼接读出来的字符串到content里。最后关闭文件f.Close()
。
package main
import (
"os"
"fmt"
)
func main(){
f, err := os.OpenFile("test.txt", os.O_RDONLY, 0)
if err != nil {
fmt.Print(err)
}
var content []byte
for {
buf := make([]byte, 10)
n , err2 := f.Read(buf)
if n > 0 {
fmt.Print(buf, " ", "n=", n, "\n")
content = append(content, buf[:n]...)
}else{
fmt.Printf("Err: %s\n", err2)
break
}
}
fmt.Print(content)
f.Close()
}
运行结果如下:
[72 101 108 108 111 10 97 98 99 49] n=10
[50 51 10 49 50 51 52 53 54 10] n=10
Err: EOF
[72 101 108 108 111 10 97 98 99 49 50 51 10 49 50 51 52 53 54 10]
参考资料: