文件
打开、关闭文件与读取文件内容(带缓冲读)
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file ,err := os.Open("F:\\lwt.txt")
if err != nil{
fmt.Println("err=",err)
}
//fmt.Printf("file:%v",file)
reader := bufio.NewReader(file)
for{
str,err := reader.ReadString('\n') // 有bug
if err==io.EOF { // 当读到文件末尾
break
}
fmt.Print(str)
}
fmt.Println("文件读取结束")
defer file.Close()
}
适用于小文件的读取方式
文件无需显示的打开关闭
package main
import (
"fmt"
"io/ioutil"
)
func main() {
file := "F:\\lwt.txt"
content,err := ioutil.ReadFile(file)
if err!=nil{
fmt.Println("err=",err)
}
fmt.Println(string(content))
}
写文件
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
filePath := "F:\\lwt1.txt"
// os.O_APPEND追加、 os.O_TRUNC先清除
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666) // 没有文件则创建,只写
if err != nil {
fmt.Println("err:", err)
return
}
str := "hello,lwt\n"
// 写入时,使用带缓存的writer
writer := bufio.NewWriter(file)
for i := 0; i < 5; i++ {
writer.WriteString(str)
}
// writer是带缓存的,先写入于缓存buf,必须flush到磁盘
writer.Flush()
fmt.Println("写入成功")
defer file.Close()
}
判断文件或目录是否存在
拷贝图片:
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
srcFile := "F:/iu.jpg"
dstFile := "F:/iu1.jpg"
_,err:= CopyFile(dstFile,srcFile)
if err != nil {
fmt.Println("err=",err)
}else {
fmt.Println("拷贝完成")
}
}
func CopyFile(disFileName string,srcFileName string) (written int64,err error){
srcFile,err := os.Open(srcFileName)
if err != nil {
fmt.Println("打开失败",err)
}
reader := bufio.NewReader(srcFile)
dstFile,err := os.OpenFile(disFileName,os.O_WRONLY|os.O_CREATE,0666)
if err != nil {
fmt.Println("打开失败",err)
return
}
writer := bufio.NewWriter(dstFile)
defer srcFile.Close()
defer dstFile.Close()
return io.Copy(writer,reader)
}