栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Golang 办公自动化--自动化管理文件和文件夹--复制文件和文件夹

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang 办公自动化--自动化管理文件和文件夹--复制文件和文件夹

自动化管理文件和文件夹 复制文件和文件夹 复制文件 使用 io.Copy

包名: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")
}

复制文件夹
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号