就是通过 ioutil 这个包打开文件 通过 bufio 操作文件流
package main
import (
"bufio"
"fmt"
"io"
ioutil "io/ioutil"
"os"
"path/filepath"
)
func main() {
//openFile()
//isFile()
//createFile()
//addFileShow()
//writerAndRead()
//readDir()
copys("../1.jpg","./1.jpg")
}
// 读取文件夹下的内容
func readDir() {
paths := "../"
f, err := ioutil.ReadDir(paths)
if err != nil {
return
}
lst := []string{}
for _, file := range f {
path1 := paths + string(filepath.Separator) + file.Name()
lst = append(lst, path1)
}
fmt.Println(lst, f)
}
// 判断文件夹是否存在
func isDirs() bool {
path := "./txt"
_,err:= os.Stat(path)
if err == nil {
// 目录存在
return true
}
if os.IsNotExist(err) {
// 目录不存在
return false
}
// 目录不确定存在不
return false
}
// 分段读取
func openFile() {
file, err := os.Open("./cs.go")
if err != nil {
fmt.Println(err, "读取错误")
}
defer file.Close()
f := bufio.NewReader(file)
for {
str, err1 := f.ReadString('\n') // 读到一个换行就结束
if err1 == io.EOF {
break
}
fmt.Println(str)
}
}
// 一次性读取
func isFile() {
file, err := ioutil.ReadFile("./cs.go")
if err != nil {
fmt.Println("读取失败")
}
fmt.Println(string(file))
}
// 创建一个新文件 通过 os 和bufio
func createFile() {
file, err := os.OpenFile("./list.go", os.O_WRONLY|os.O_CREATE, 0666)
if err != nil {
fmt.Println("openFile close")
}
defer file.Close()
str := "hello liuyang "
writer := bufio.NewWriter(file) // writer 是缓冲区
for i := 0; i < 5; i++ {
writer.WriteString(str + "\n")
}
writer.Flush() // 讲缓冲区的数据放入文件
}
// 给创建的文件添加 几个 hello 并讲 添加的内容 和一起显示出来
func addFileShow() {
path := "./list.go"
file, err := os.OpenFile(path, os.O_RDWR|os.O_APPEND, 0666)
if err != nil {
fmt.Println("文件读取失败", path)
panic("错误")
}
defer file.Close()
fmt.Println("111")
readr := bufio.NewReader(file)
for {
str1, err1 := readr.ReadString('\n')
if err1 == io.EOF { // 文件末尾了
break
}
fmt.Println(str1, err1, "----")
}
str := "hello88787877878\n"
writer := bufio.NewWriter(file)
for i := 0; i < 10; i++ {
writer.WriteString(str)
}
writer.Flush()
}
// 讲一个文件的内容 写入到另外一个文件里面 两个文件已经存在
func writerAndRead() {
path1 := "./list.go"
path2 := "./cs.go"
file1, err1 := os.Open(path2)
if err1 != nil {
fmt.Println("读取文件失败", file1)
}
file2, err2 := os.OpenFile(path1, os.O_RDWR|os.O_APPEND, 0666)
if err2 != nil {
fmt.Println("文件读取失败", err2)
}
defer file1.Close()
reads := bufio.NewReader(file1)
writers := bufio.NewWriter(file2)
for {
f, err3 := reads.ReadString('\n')
if err3 == io.EOF {
break
}
writers.WriteString(f)
}
writers.Flush()
}
func copys(dstFile, srcFile string) (int64, error) {
srcF,err := os.Open(srcFile)
if err != nil {
fmt.Println("open srcFile 出错",err)
return 0, nil
}
defer srcF.Close()
reader := bufio.NewReader(srcF)
dstF,err1 := os.OpenFile(dstFile,os.O_WRONLY|os.O_CREATE,0666)
if err1 != nil {
fmt.Println("open dstFile 出错",err)
return 0, nil
}
weitr := bufio.NewWriter(dstF)
defer dstF.Close()
return io.Copy(weitr,reader)
}
发表评论