引入 import “os”
os包提供了操作系统函数的不依赖平台的接口。设计为Unix风格的,虽然错误处理是go风格的;失败的调用会返回错误值而非错误码。通常错误值里包含更多信息。例如,如果某个使用一个文件名的调用(如Open、Stat)失败了,打印错误时会包含该文件名,错误类型将为*PathError,其内部可以解包获得更多信息。
缓存读取
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("/Desktop/12.text")
if err != nil {
fmt.Println("打开失败")
}
defer file.Close()
//缓冲模式
reader := bufio.NewReader(file)
for {
readString, err := reader.ReadString('\n')
if err != nil {
fmt.Println(err)
break
}
if err == io.EOF {
fmt.Println("文件结尾")
break
}
fmt.Println(readString)
}
err = file.Close()
if err != nil {
fmt.Println("关流异常",err)ji
}
}
一次读取
package main
import (
"fmt"
"io/ioutil"
_ "os"
)
func main() {
//一次性读取文件 较小文件推荐
file, err := ioutil.ReadFile("/Desktop/12.text")
if err != nil {
fmt.Println(err)
}
fmt.Println(string(file))
}
写出
写出常量 权限
const (
O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
O_RDWR int = syscall.O_RDWR // 读写模式打开文件
O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
O_CREATE int = syscall.O_CREAT // 如果不存在将创建一个新文件
O_EXCL int = syscall.O_EXCL // 和O_CREATE配合使用,文件必须不存在
O_SYNC int = syscall.O_SYNC // 打开文件用于同步I/O
O_TRUNC int = syscall.O_TRUNC // 如果可能,打开时清空文件
)
OpenFile是一个更一般性的文件打开函数,大多数调用者都应用Open或Create代替本函数。它会使用指定的选项(如O_RDONLY等)、指定的模式(如0666等)打开指定名称的文件。如果操作成功,返回的文件对象可用于I/O。如果出错,错误底层类型是*PathError。
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
//打开文件 写权限 没有文化创建文件
file, err := os.OpenFile("/Desktop/写入.text", os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Println("打开错误", err)
return
}
defer file.Close()
writer := bufio.NewWriter(file)
for i := 0; i < 100; i++ {
sprintf := fmt.Sprintf("%v我开始写了\n", i)
writer.WriteString(sprintf)
}
//从缓存数据写入数据
writer.Flush()
fmt.Println("写入成功")
}
一个文件写入另一个文件
函数向filename指定的文件中写入数据。如果文件不存在将按给出的权限创建文件,否则在写入数据之前清空文件。
package main
import (
"io/ioutil"
"log"
)
func main() {
file, err := ioutil.ReadFile("/Desktop/写入.text")
if err != nil {
log.Fatalln("读取错误")
return
}
err1:= ioutil.WriteFile("/Desktop/写入1.text", file, 0666)
if err1!=nil {
log.Fatalln("写入文件错误")
}
}