golang 大文件分割

原创 2015年11月19日 16:24:30
golang 大文件分割
  1. package main
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "math"
  6. "os"
  7. "strconv"
  8. )
  9. const chunkSize int64 = 4 << 20
  10. func main() {
  11. fileInfo, err := os.Stat("test.zip")
  12. if err != nil {
  13. fmt.Println(err)
  14. }
  15. num := int(math.Ceil(float64(fileInfo.Size()) / float64(chunkSize)))
  16. fi, err := os.OpenFile("test.zip", os.O_RDONLY, os.ModePerm)
  17. if err != nil {
  18. fmt.Println(err)
  19. return
  20. }
  21. b := make([]byte, chunkSize)
  22. var i int64 = 1
  23. for ; i <= int64(num); i++ {
  24. fi.Seek((i-1)*(chunkSize), 0)
  25. if len(b) > int((fileInfo.Size() - (i-1)*chunkSize)) {
  26. b = make([]byte, fileInfo.Size()-(i-1)*chunkSize)
  27. }
  28. fi.Read(b)
  29. f, err := os.OpenFile("./"+strconv.Itoa(int(i))+".db", os.O_CREATE|os.O_WRONLY, os.ModePerm)
  30. if err != nil {
  31. fmt.Println(err)
  32. return
  33. }
  34. f.Write(b)
  35. f.Close()
  36. }
  37. fi.Close()
  38. fii, err := os.OpenFile("test.zip", os.O_CREATE|os.O_WRONLY|os.O_APPEND, os.ModePerm)
  39. if err != nil {
  40. fmt.Println(err)
  41. return
  42. }
  43. for i := 1; i <= num; i++ {
  44. f, err := os.OpenFile("./"+strconv.Itoa(int(i))+".db", os.O_RDONLY, os.ModePerm)
  45. if err != nil {
  46. fmt.Println(err)
  47. return
  48. }
  49. b, err := ioutil.ReadAll(f)
  50. if err != nil {
  51. fmt.Println(err)
  52. return
  53. }
  54. fii.Write(b)
  55. f.Close()
  56. }
  57. }
复制代码www.kmnk01.com www.jjg3.com

Golang的坑之http读取大文件必须读完

先上代码 package main import ( "fmt" "net/http" ) func main() { resp, err := http.Get("ht...

Golang的坑之http读取大文件必须读完

先上代码 package main import ( "fmt" "net/http" ) func main() { resp, err := http.Get("ht...

大文件分割与合并

  • 2014年02月28日 23:44
  • 71KB
  • 下载

大文件分割与合并

  • 2016年04月12日 16:19
  • 2KB
  • 下载

linux大文件分割与合并

前言 近日由于网上下载了很多图片,然后花了很长一段时间进行压缩,压缩完成后一看,128G多,由于机器在远程,本来想通过百度网盘进行备份,后来提示最大单个文件只能4G大小,无奈只能手动切割大文件。 ...

免费MP4大文件分割软件

  • 2017年04月18日 18:55
  • 7.87MB
  • 下载

android下大文件分割上传

   由于android自身的原因,对大文件(如影视频文件)的操作很容易造成OOM,即:Dalvik堆内存溢出,利用文件分割将大文件分割为小文件可以解决问题。 文件分割后...

用Java实现大文件的分割与合并

我们平时在发送文件或上传文件的时候会遇到文件大小的限制。如果文件过大,那么我们就可以将其分割,由接收方来将这些文件合并。其本质不过就是文件的读写操作。文件的分割public static void S...

Linux大文件分割split和合并cat使用方法

本文主要介绍linux下两个命令:split和cat。其中,相信大家都熟悉cat命令,一般用来查看一个文件的内容,但是它还其它的功能,比如这里要介绍的文件合并功能,它可把多个文件内容合并到一个文件中。...
  • jonbb
  • jonbb
  • 2016年05月09日 11:01
  • 265

php 读取,分割大文件详解

‍在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file、file_get_contents之类的函数,简简单单的几行代码就能很漂亮的完成我们所需要的功能。但当所操作的文件是一个比较大的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:golang 大文件分割
举报原因:
原因补充:

(最多只允许输入30个字)