go基础篇之十

一、文件操作

go语言中提供了多种文件操作的方式,在使用过程中需要根据实际情况来选择。

二、实战

package main

import (
	"bufio"
	"fmt"
	"io"
	"io/ioutil"
	"os"
)

/**
文件操作


 */
func main() {

	//打开文件

	fileObj, err := os.Open("../go/src/zy.txt")

	if err != nil {
		fmt.Printf("open failed err:%v \n", err)
		return
	}
	//延迟关闭文件
	defer fileObj.Close()

	//读取文件内容
	var tempFile = make([]byte, 256)

	n, errs := fileObj.Read(tempFile)
	if errs != nil {
		fmt.Printf("read failed %v", errs)
		return
	}

	fmt.Println("read bytes from file", n)
	// 输出文件内容
	fmt.Print(string(tempFile), "\n")

	//readAll()

	//readBufio()

	//iotilRead()

	//write()

	//writeBufio()

	ioUtilWrite()
}

//使用io 读取
func readAll() {

	//打开文件

	fileObj, err := os.Open("../go/src/read.txt")

	if err != nil {
		fmt.Printf("open failed err:%v \n", err)
		return
	}
	//延迟关闭文件
	defer fileObj.Close()

	//读取文件内容
	var tempFile = make([]byte, 256)
	for {
		n, errs := fileObj.Read(tempFile)
		// 文件是否读取结束
		if errs == io.EOF {
			fmt.Println(tempFile[:n])
			return
		}

		if errs != nil {
			fmt.Printf("read failed errs:%v \n ", errs)
			return
		}

		fmt.Printf("read %d bytes from file \n", n)
		// 输出文件内容
		fmt.Print(string(tempFile[:n]))
	}

}

//使用 bufio 读取
func readBufio() {

	//打开文件

	fileObj, err := os.Open("../go/src/read.txt")

	if err != nil {
		fmt.Printf("open failed err:%v \n", err)
		return
	}
	//延迟关闭文件
	defer fileObj.Close()

	//读取文件内容
	//var tempFile = make([]byte, 256)

	reader := bufio.NewReader(fileObj)
	for {
		line, errs := reader.ReadString('\n')

		// 文件是否读取结束
		if errs == io.EOF {
			fmt.Println(line)
			return
		}

		if errs != nil {
			fmt.Printf("read failed errs:%v \n ", errs)
			return
		}

		//fmt.Println("read bytes from file", line)
		// 输出文件内容
		fmt.Print(string(line))
	}

}

// ioUtil 读取文件

func iotilRead() {

	file, err := ioutil.ReadFile("../go/src/read.txt")
	if err != nil {
		fmt.Printf("read file error:%v \n", err)
		return
	}

	fmt.Println(string(file))

}

// 文件写入

func write() {
	file, err := os.OpenFile("../go/src/read.txt", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644)

	if err != nil {
		fmt.Printf("write file error %v\n", err)
		return
	}

	// 关闭文件流
	defer file.Close()

	str := "tom like go "

	file.WriteString(str)

}

// 使用writeBufio 写入

func writeBufio() {
	file, err := os.OpenFile("../go/src/read.txt", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)

	if err != nil {
		fmt.Printf("write file error %v\n", err)
		return
	}

	// 关闭文件流
	defer file.Close()

	writer := bufio.NewWriter(file)

	str := "钟渊在学习 哈哈哈"

	writer.WriteString(str)

	writer.Flush()

}

// ioUtil 操作文件写入

func ioUtilWrite() {

	str := "今天是星期六"

	error := ioutil.WriteFile("../go/src/read.txt", []byte(str), 0644)

	if error != nil {
		fmt.Println(" file write error", error)
		return
	}

}

你可能感兴趣的:(go语言,golang,java,servlet)