您可以通过以下步骤来开始编写您所需的代码和注释:
import (
"os"
"io/ioutil"//全部读取
"bufio"//带有缓冲的读取
"fmt"
)
使用os.Open()
函数可以打开一个文件,并返回一个*os.File
类型的文件指针。您可以使用defer
关键字确保在函数结束时关闭文件。
file, err := os.Open("filename.txt")
if err != nil {
fmt.Println(err)
}
defer file.Close()//关闭文件
使用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))
//读取方式 带有缓存
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("读取完成")
使用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)
}
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()
path2 :="E:/myWorld/golangblibli/code/src/gocode/project01/file/papercopy.txt"
//复制
err2 := ioutil.WriteFile(path2,content,0666)
if err2 != nil {
fmt.Println("存在错误",err2)
}
使用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)
}
文件复制
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)
}
//文件复制
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()
以上是一些基本的文件操作示例。您可以根据自己的需求进行进一步的扩展和修改。