判断文件是否存在 package main
import ( "fmt" "os" )
func main() { //获取文件的信息 stat, err := os.Stat("C:\Users\Regan\Desktop\test.txt") if err != nil{
fmt.Println("err=",err) //返回true表示文件不存在 if os.IsNotExist(err){ fmt.Println("文件不存在") } }else { fmt.Println("文件存在!") fmt.Println(stat) }
} 复制代码 stat, err := os.Stat("C:\Users\Regan\Desktop\test.txt")是获取文件的信息的API。 便捷写出 package main
import ( "fmt" "io/ioutil" )
想当年, 老夫拳打南山敬老院, 脚踢北海幼儿园, 我膨胀了吗?!
反引号保留原始格式
data:=`
想当年, 老夫拳打南山敬老院, 脚踢北海幼儿园, 我膨胀了吗?! `
复制代码 dataBytes := []byte(data)是将数据字符串转化为原始字节切片 err := ioutil.WriteFile("C:\Users\Regan\Desktop\test.txt", dataBytes, 0666写入字节数据到文件中,0666是权限。 简易的文件拷贝 package main
import ( "fmt" "io" "os" )
func main() { srcFile, _ := os.OpenFile("C:\\Users\\11316\\Desktop\\test.txt",os.O_RDONLY,0666) dstFile, _ := os.OpenFile("C:\\Users\\11316\\Desktop\\test1.txt",os.O_CREATE|os.O_WRONLY,0666) written, err := io.Copy(dstFile, srcFile) if err == nil{ fmt.Println("拷贝成功,字节数=",written) }else { fmt.Println("拷贝失败,err=",err) } }
复制代码 srcFile, _ := os.OpenFile("C:\\Users\\11316\\Desktop\\test.txt",os.O_RDONLY,0666) dstFile, _ := os.OpenFile("C:\\Users\\11316\\Desktop\\test1.txt",os.O_CREATE|os.O_WRONLY,0666) 复制代码
将源文件和目标文件打开。
written, err := io.Copy(dstFile, srcFile)这个是将源文件的数据copy到目标文件的语句。 升级版:缓冲式文件拷贝 当遇到大文件时第一种方法不在适用,需要用到本方法。 package main
import ( "bufio" "fmt" "io" "os" )
func main() { //打开源文件 srcfile, _ := os.OpenFile("C:\\Users\\11316\\Desktop\\rice.png", os.O_RDONLY, 0666) // 打开目标文件 dstfile, _ := os.OpenFile("C:\\Users\\11316\\Desktop\\test11.png", os.O_CREATE|os.O_WRONLY, 0666) defer func() { srcfile.Close() dstfile.Close() fmt.Println("文件已关闭") }()
reader := bufio.NewReader(srcfile) writer := bufio.NewWriter(dstfile) buffer := make([]byte, 1024) for{ _ , err := reader.Read(buffer) if err != nil{ if err == io.EOF{ fmt.Println("源文件读取完毕") break }else { fmt.Println("error") return } }else { _, err1 := writer.Write(buffer) if err1 != nil{ fmt.Println(err1) return } } }
}
复制代码
新建缓冲区,把内容先放在缓冲区。
reader := bufio.NewReader(srcfile) writer := bufio.NewWriter(dstfile) 复制代码 `
_ , err := reader.Read(buffer)读取 _ , err1 := writer.Write(buffer)写入