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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

分割大文件的程序

  • 2013-03-11 10:43
  • 197KB
  • 下载

tar压缩与分割大文件

在Linux下使用 tar 命令来将文件打包并压缩是很通常的用法了。可是Linux的文件系统对文件大小有限制,也就是说一个文件最大不能超过2G,如果压缩包的的内容很大,最后 的结果就会超过2G,又或者...

Java大文件的分割和合并

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import...

Java分割合并大文件

文件分割思路 首先,我们拿到一个文件要分割的成几份时候,我们先将文件的length得到,之后用 length 除以份数 ,这样我们就能够知道每一份的长度是多少,这里会有一个问题,如果我们的长度没有被...

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

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

linux下使用split 来分割大文件

  平常都是使用ssh来进行远程操作和传输文件 , 这个工具可以很方便的实现我们所需要的功能,一直使用正常,没遇到什么问题,今天因为需要传一个412M的文件 , 无论如何也传不过来, 一直系统报...

php 读取,分割大文件详解

‍在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file、file_get_contents之类的函数,简简单单的几行代码就能很漂亮的完成我们所需要的功能。但当所操作的文件是一个比较大的...

使用split分割大文件

分割文件: 我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片“邮递”过去给他,让它自己组装起来吧。 [root@pps public_rw]# ls ...

Linux系统下使用split命令分割大文件

我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片“邮递”过去给他,让它自己组装起来吧。   [root@pps public_rw]# ls -lh Re...

Java实现大文件分割

package com.lss.common.file.partition; import java.io.File; import java.io.IOException; public abs...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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