包名:os
原型:func (m FileMode) IsRegular() bool
作用:IsRegular 报告 m 是否是一个普通文件。
返回:bool
包名:io
原型:func Copy(dst Writer, src Reader) (written int64, err error)
作用:将 src 的数据拷贝到 dst,直到在 src 上到达 EOF 或发生错误。返回拷贝的字节数和遇到的第一个错误。对成功的调用,返回值 err 为 nil 而非 EOF,因为 Copy 定义为从 src 读取直到 EOF,它不会将读取到 EOF 视为应报告的错误。如果 src 实现了 WriterTo 接口,本函数会调用 src.WriteTo(dst) 进行拷贝;否则如果 dst 实现了 ReaderFrom 接口,本函数会调用 dst.ReadFrom(src) 进行拷贝。
返回:int64、 error
示例:
package main
import (
"io"
"os"
)
func copy(src string, dst string) {
srcFileInfo, err := os.Stat(src)
if err != nil {
return
}
if !srcFileInfo.Mode().IsRegular() {
return
}
srcFile, err := os.Open(src)
if err != nil {
return
}
defer srcFile.Close()
dstFile, err := os.Create(dst)
if err != nil {
return
}
defer dstFile.Close()
io.Copy(dstFile, srcFile)
}
func main() {
copy("./test.txt", "./test1.txt")
}
使用 ioutil.WriteFile() 和 ioutil.ReadFile()
包名:io/ioutil
原型:func ReadFile(filename string) ([]byte, error)
作用:ReadFile 从 filename 指定的文件中读取数据并返回文件的内容。成功的调用返回的 err 为 nil 而非 EOF。因为本函数定义为读取整个文件,它不会将读取返回的 EOF 视为应报告的错误。
返回:[]byte、 string
包名:io/ioutil
原型:func WriteFile(filename string, data []byte, perm os.FileMode) error
作用:函数向 filename 指定的文件中写入数据。如果文件不存在将按给出的权限创建文件,否则在写入数据之前清空文件。
返回:error
示例:
package main
import (
"io/ioutil"
)
func copy(src string, dst string) {
bs, err := ioutil.ReadFile(src)
if err != nil {
return
}
err = ioutil.WriteFile(dst, bs, 0644)
if err != nil {
return
}
}
func main() {
copy("./test.txt", "./test1.txt")
}
使用 os.Read() 和 os.Write()
包名:os
原型:func (f *File) Read(b []byte) (n int, err error)
作用:Read 方法从f中读取最多 len(b) 字节数据并写入 b。它返回读取的字节数和可能遇到的任何错误。文件终止标志是读取 0 个字节且返回值 err 为 io.EOF。
返回:int、 error
包名:os
原型:func (f *File) Write(b []byte) (n int, err error)
作用:Write 向文件中写入 len(b)字节数据。它返回写入的字节数和可能遇到的任何错误。如果返回值 n!=len(b),本方法会返回一个非 nil 的错误。
返回:int、 error
示例:
package main
import (
"io"
"os"
)
func copy(src string, dst string) {
srcFile, err := os.Open(src)
if err != nil {
return
}
defer srcFile.Close()
dstFile, err := os.Create(dst)
if err != nil {
return
}
defer dstFile.Close()
buf := make([]byte, 1024)
for {
n, err := srcFile.Read(buf)
if err != nil && err != io.EOF {
return
}
if n == 0 {
break
}
dstFile.Write(buf[:n])
}
}
func main() {
copy("./test.txt", "./test1.txt")
}
复制文件夹


