golang 大文件分割与合并

本文探讨了如何使用Golang语言高效地对大文件进行分割和合并操作,适用于处理超过系统限制或者需要分批处理的大文件场景。通过Golang的文件I/O和切片特性,可以实现灵活且高效的文件管理。
摘要由CSDN通过智能技术生成
package main

import (
   "fmt"
   "io/ioutil"
   "math"
   "os"
   "strconv"
)

const chunkSize = 1 << (10 * 2)

func main() {
   fileInfo, err := os.Stat("cbd.mp4")
   if err != nil {
      panic(err)
   }

   num := math.Ceil(float64(fileInfo.Size()) / chunkSize)

   fi, err := os.OpenFile("cbd.mp4", os.O_RDONLY, os.ModePerm)
   if err != nil {
      fmt.Println(err)
      return
   }
   b := make([]byte, chunkSize)
   var i int64 = 1
   for ; i <= int64(num); i++ {
      fi.Seek((i-1)*chunkSize, 0)
      if len(b) > int(fileInfo.Size()-(i-1)*chunkSize) {
         b = make([]byte, fileInfo.Size()-(i-1)*chunkSize)
      }
      fi.Read(b)

      f, err := os.OpenFile("./"+strconv.Itoa(int(i))+".db", os.O_CREATE|os.O_WRONLY, os.ModePerm)
      if err != nil {
         panic(err)
      }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值