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()
}

輸出:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章