golang人性化文件复制插件库go-decent-copy的使用

golang人性化文件复制插件库go-decent-copy的使用

go-decent-copy 是一个为人类设计的文件复制库,提供了简单易用的文件复制功能。

使用示例

以下是使用 go-decent-copy 进行文件复制的完整示例代码:

package main

import (
    "fmt"
    "os"
    "github.com/hugocarreira/go-decent-copy"
)

func main() {
    // 获取当前工作目录
    execPath, _ := os.Getwd()

    // 设置源文件和目标文件路径
    fileOrigin := fmt.Sprintf(execPath + "/testCopy.txt")  // 源文件路径
    fileDestiny := fmt.Sprintf(execPath + "/testCopied.txt")  // 目标文件路径
    
    // 执行文件复制
    err := Copy(fileOrigin, fileDestiny)
    
    // 错误处理
    if err != nil {
        fmt.Printf("文件复制出错: %v\n", err)
    } else {
        fmt.Println("文件复制成功!")
    }
}

功能特点

  1. 简单易用的 API 设计
  2. 清晰的错误处理
  3. 支持基本的文件复制操作

项目状态

GoDoc

Build Status

Go Report Card

codecov

许可证

该项目使用 MIT 许可证。


更多关于golang人性化文件复制插件库go-decent-copy的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang人性化文件复制插件库go-decent-copy的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


go-decent-copy - 人性化的Golang文件复制库

go-decent-copy是一个为Golang设计的更人性化的文件复制库,它提供了比标准库io.Copy更友好的功能和更好的错误处理。

主要特性

  1. 进度回调功能
  2. 更清晰的错误处理
  3. 可选的缓冲区大小控制
  4. 支持取消操作
  5. 自动创建目标目录

安装

go get github.com/hugocarreira/go-decent-copy

基本使用示例

package main

import (
	"fmt"
	"github.com/hugocarreira/go-decent-copy"
)

func main() {
	src := "/path/to/source/file.txt"
	dst := "/path/to/destination/file.txt"
	
	// 简单复制
	err := decent_copy.Copy(src, dst)
	if err != nil {
		fmt.Printf("复制失败: %v\n", err)
		return
	}
	
	fmt.Println("文件复制成功")
}

带进度回调的复制

package main

import (
	"fmt"
	"github.com/hugocarreira/go-decent-copy"
)

func main() {
	src := "largefile.iso"
	dst := "largefile-copy.iso"
	
	// 带进度回调的复制
	err := decent_copy.CopyWithCallback(src, dst, func(progress float64) {
		fmt.Printf("\r复制进度: %.2f%%", progress*100)
	})
	
	if err != nil {
		fmt.Printf("\n复制失败: %v\n", err)
		return
	}
	
	fmt.Println("\n文件复制完成")
}

高级选项配置

package main

import (
	"fmt"
	"github.com/hugocarreira/go-decent-copy"
)

func main() {
	src := "source.dat"
	dst := "destination.dat"
	
	// 创建配置选项
	opts := decent_copy.Options{
		BufferSize: 64 * 1024, // 64KB缓冲区
		OnProgress: func(progress float64) {
			fmt.Printf("\r进度: %.2f%%", progress*100)
		},
	}
	
	// 使用自定义选项复制
	err := decent_copy.CopyWithOptions(src, dst, opts)
	if err != nil {
		fmt.Printf("\n错误: %v\n", err)
		return
	}
	
	fmt.Println("\n复制成功完成")
}

错误处理

go-decent-copy提供了比标准库更详细的错误信息:

package main

import (
	"fmt"
	"github.com/hugocarreira/go-decent-copy"
)

func main() {
	src := "nonexistent.txt"
	dst := "copy.txt"
	
	err := decent_copy.Copy(src, dst)
	if err != nil {
		switch e := err.(type) {
		case *decent_copy.SourceFileError:
			fmt.Printf("源文件错误: %v\n", e)
		case *decent_copy.DestinationFileError:
			fmt.Printf("目标文件错误: %v\n", e)
		case *decent_copy.CopyError:
			fmt.Printf("复制过程中错误: %v\n", e)
		default:
			fmt.Printf("未知错误: %v\n", err)
		}
		return
	}
	
	fmt.Println("复制成功")
}

性能考虑

虽然go-decent-copy提供了更多功能,但它的性能与标准库io.Copy相当。通过调整缓冲区大小,您可以优化复制操作的性能:

opts := decent_copy.Options{
    BufferSize: 1 * 1024 * 1024, // 1MB缓冲区,适用于大文件
}

总结

go-decent-copy为Golang文件复制操作提供了更人性化的接口,特别适合需要进度反馈或更精细错误处理的场景。它的API设计简洁明了,同时保留了Golang惯用的错误处理模式。

对于简单的文件复制,标准库的io.Copy可能足够,但如果需要更多控制或用户反馈,go-decent-copy是一个很好的选择。

回到顶部