【golang中的文件操作】

您可以通过以下步骤来开始编写您所需的代码和注释:

1. 导入所需的包:

import (
    "os"
    "io/ioutil"//全部读取
    "bufio"//带有缓冲的读取
    "fmt"
)

2. 打开文件:

使用os.Open()函数可以打开一个文件,并返回一个*os.File类型的文件指针。您可以使用defer关键字确保在函数结束时关闭文件。

file, err := os.Open("filename.txt")
if err != nil {
    
    
    fmt.Println(err)
}
defer file.Close()//关闭文件

3. 读取文件内容:ioutil.ReadFile(path )

使用ioutil.ReadFile()函数可以读取整个文件的内容,并将其作为字节切片返回。您可以使用string()函数将字节切片转换为字符串。

path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
//一次性读取所有
content, err := ioutil.ReadFile(path )
if err != nil {
    
    
    fmt.Println(err)
}
fmt.Println(string(content))

4 带有缓冲的读取bufio.NewReader(file)

//读取方式  带有缓存
	path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
	file ,err:= os.Open(path)
	if err != nil{
    
    
		fmt.Println("存在错误",err)
	}
	fmt.Println(file.Name())
	//关闭文件
	defer file.Close()
	//读取管道
	reader := bufio.NewReader(file)
	
	for{
    
    
		str,err2:=reader.ReadString('\n')//读取到\n 输出一次
		fmt.Println(str)
		if err2 == io.EOF {
    
    
			break
		}
	
	}
	fmt.Println("读取完成")

5. 写入文件:file.WriteString(“Hello, World!”)

使用os.Create()函数可以创建一个新文件,并返回一个*os.File类型的文件指针。然后,您可以使用Write()WriteString()方法将数据写入文件。

file, err := os.Create("newfile.txt")
if err != nil {
    
    
    fmt.Println(err)
}
defer file.Close()

_, err = file.WriteString("Hello, World!")
if err != nil {
    
    
    fmt.Println(err)
}

6.文件写入 bufio.NewWriter(file)

path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"

//文件写入
file, err := os.OpenFile(path, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0755)
if err != nil {
    
    
	fmt.Println("存在错误", err)
}
defer file.Close()
//给个写的管子
writer := bufio.NewWriter(file)

//writer.WriteString("你好 我是程序数据\n")
for i:=0;i<10;i++ {
    
    
	str := "你好 我是程序数据\n"
	writer.WriteString(str)
}

writer.Flush()

7.文件写入ioutil.WriteFile(path2,content,0666)

path2 :="E:/myWorld/golangblibli/code/src/gocode/project01/file/papercopy.txt"
//复制
err2 := ioutil.WriteFile(path2,content,0666)
if err2 != nil {
    
    
	fmt.Println("存在错误",err2)
}

8. 文件重命名和删除:

使用os.Rename()函数可以将文件重命名,使用os.Remove()函数可以删除文件。

err := os.Rename("oldfile.txt", "newfile.txt")
if err != nil {
    
    
    fmt.Println(err)
}

err = os.Remove("filename.txt")
if err != nil {
    
    
    fmt.Println(err)
}

9文件复制 ReadFile WriteFile

文件复制
path :="E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
content,err := ioutil.ReadFile(path)
if err != nil {
    
    
	fmt.Println("存在错误",err)
}
fmt.Println(string(content))

path2 :="E:/myWorld/golangblibli/code/src/gocode/project01/file/papercopy.txt"
//复制
err2 := ioutil.WriteFile(path2,content,0666)
if err2 != nil {
    
    
	fmt.Println("存在错误",err2)
}

10文件复制 文件复制NewReader NewWriter

//文件复制
path := "E:/myWorld/golangblibli/code/src/gocode/project01/file/paper.txt"
file ,err:= os.Open(path)
if err != nil{
    
    
	fmt.Println("存在错误",err)
}
fmt.Println(file.Name())
//关闭文件
defer file.Close()

//	给个管道
reader := bufio.NewReader(file)
path2 := "E:/myWorld/golangblibli/code/src/gocode/project01/file/papercopy2.txt"
file2 ,err2:= os.OpenFile(path2, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0755)
if err2 != nil{
    
    
	fmt.Println("存在错误",err2)
}
writer := bufio.NewWriter(file2)
for  {
    
    
	str, err:= reader.ReadString('\n')
	fmt.Println(str)
	writer.WriteString(str)
	if err == io.EOF {
    
    
		break
	}
}
writer.Flush()

以上是一些基本的文件操作示例。您可以根据自己的需求进行进一步的扩展和修改。

猜你喜欢

转载自blog.csdn.net/weiyi47/article/details/131885006