golang 文件读写

golang 文件读写

1. 常用函数列表:
func Create  (name string)  (file *File, err error)
func Open    (name string) (file *File, err error)
func (f *File) Read   (b []byte) (n int, err error)
func (f *File) Write   (b []byte) (n int, err error)
func (f *File) WriteString   (s string) (ret int, err error)
func (f *File) WriteAt   (b []byte, off int64) (n int, err error)
func (f *File) ReadAt   (b []byte, off int64) (n int, err error)
func (f *File) Seek   (offset int64, whence int) (ret int64, err error)
func OpenFile   (name string, flag int, perm FileMode) (file *File, err error)

 

文件写操作:

package main

import (
	"fmt"
	"os"
)

func main() {
	// 创建文件
	file_fd, err := os.Create("E:/1D/go/log/first.log")

	// 字符串方式写入
	len, err := file_fd.WriteString("Create a new file\n")
	fmt.Println("WriteString 写入长度:", len)

	// 数组方式写入
	str_buf := []byte("write data by []byte\n") /*字符串转数组*/
	len, err = file_fd.Write(str_buf)
	fmt.Println("Write 写入长度:", len)

	// 获取文件指针的位置
	cur_fd_pst, err := file_fd.Seek(0, 1)
	fmt.Println("文件指针当前位置:", cur_fd_pst)

	// 设置文件指针的偏移量
	cur_fd_pst, err = file_fd.Seek(10, 1)
	fmt.Println("文件指针当前位置:", cur_fd_pst)

	cur_fd_pst, err = file_fd.Seek(0, 1)

	// 从指定位置写入
	len, err = file_fd.WriteAt([]byte("WriteAt Begin ..."), cur_fd_pst)
	fmt.Println("WriteAt 写入长度:", len)

	cur_fd_pst, err = file_fd.Seek(0, 1) /*这时的文件指针并不是最后的位置,WriteAt没有刷新文件指针,如果继续写数据需要手动刷新文件指针的位置*/
	fmt.Println("文件指针当前位置:", cur_fd_pst)

	if err != nil {

	}

	file_fd.Close()

}

 结果如下:

标题

文件读操作

package main

import (
	"fmt"
	"os"
)



func main() {

	rd_fd, err := os.Open("E:/1D/go/log/first.log")

	b := make([]byte, 18)
	// 普通read读取
	rd_fd.Read(b)
	fmt.Println("read :", string(b))

	// rd_fd.Seek(-18, 1)
	// rd_fd.Read(b)

	// 指定指针位置开始读取
	rd_fd.ReadAt(b, 0)
	fmt.Println("read :", string(b))
	if err != nil {

	}

	rd_fd.Seek(-18, 1)
	all_context := ""
	for len, _ := rd_fd.Read(b); len > 0; len, _ = rd_fd.Read(b) {
		all_context = fmt.Sprintf("%s%s", all_context, b)
	}
	fmt.Println("for read : \n", all_context)
	rd_fd.Close()
}

输出:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值