当前位置: 首页 > 编程笔记 >

go语言对文件按照指定块大小进行分割的方法

齐雅畅
2023-03-14
本文向大家介绍go语言对文件按照指定块大小进行分割的方法,包括了go语言对文件按照指定块大小进行分割的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了go语言对文件按照指定块大小进行分割的方法。分享给大家供大家参考。具体如下:


import (

 // "bufio"

 "flag"

 "fmt"

 "io"

 "os"

)

import "strconv"

var infile *string = flag.String("f", "Null", "please input a file name or dir.")

var size *string = flag.String("s", "0", "please input a dst file size.")

//func dataCopy(file *os.File, file *os.File)

func SplitFile(file *os.File, size int) {

 finfo, err := file.Stat()

 if err != nil {

  fmt.Println("get file info failed:", file, size)

 }

 fmt.Println(finfo, size)

 //每次最多拷贝1m

 bufsize := 1024 * 1024

 if size < bufsize {

  bufsize = size

 }

 buf := make([]byte, bufsize)

 num := (int(finfo.Size()) + size - 1) / size

 fmt.Println(num, len(buf))

 for i := 0; i < num; i++ {

  copylen := 0

  newfilename := finfo.Name() + strconv.Itoa(i)

  newfile, err1 := os.Create(newfilename)

  if err1 != nil {

   fmt.Println("failed to create file", newfilename)

  } else {

   fmt.Println("create file:", newfilename)

  }

  for copylen < size {

   n, err2 := file.Read(buf)

   if err2 != nil && err2 != io.EOF {

    fmt.Println(err2, "failed to read from:", file)

    break

   }

   if n <= 0 {

    break

   }

   //fmt.Println(n, len(buf))

   //写文件

   w_buf := buf[:n]

   newfile.Write(w_buf)

   copylen += n

  }

 }

 return

}

func main() {

 flag.Parse()

 if *infile == "Null" {

  fmt.Println("no file to input")

  return

 }

 file, err := os.Open(*infile)

 if err != nil {

  fmt.Println("failed to open:", *infile)

 }

 defer file.Close()

 size, _ := strconv.Atoi(*size)

 SplitFile(file, size*1024)

}

希望本文所述对大家的Go语言程序设计有所帮助。

 类似资料:
  • 本文向大家介绍go语言实现文件分割的方法,包括了go语言实现文件分割的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现文件分割的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

  • 本文向大家介绍php实现将字符串按照指定距离进行分割的方法,包括了php实现将字符串按照指定距离进行分割的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现将字符串按照指定距离进行分割的方法。分享给大家供大家参考。具体如下: 将一个字符串每隔三个字符添加一个逗号,例如把字符串1234567890转换为1,234,567,890,这种做法在金融领域非常常见 希望本文所述对大家的p

  • 本文向大家介绍python按照多个字符对字符串进行分割的方法,包括了python按照多个字符对字符串进行分割的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python按照多个字符对字符串进行分割的方法。分享给大家供大家参考。具体分析如下: 这段python代码通过这规则表达式对字符串进行分割,使用\w作为分割符,只要不是字母和数字的就会被分割开来。 输出结果如下 希望本文所述对大家

  • 问题内容: 我已经将CSV文件(大约10,000行;每行具有300列)存储在LINUX服务器上。我想将此CSV文件分解为500个CSV文件,每个文件20条记录。(每个具有与原始CSV中相同的CSV标头) 有什么linux命令可以帮助这种转换吗? 问题答案: 使其成为一个函数。您现在可以打电话 发现于:http : //edmondscommerce.github.io/linux/linux-sp

  • 问题内容: 我想将包含字符串的巨大文件拆分为一组新的(较小)文件,并尝试使用nio2。 我不想将整个文件加载到内存中,因此我尝试了BufferedReader。 较小的文本文件应受文本行数的限制。 该解决方案有效,但是我想问一问,是否有人知道使用usion java 8(也许是带有stream()-api的lamdas)和nio2具有更好的性能的解决方案: 问题答案: 注意/ 及其子类的直接使用与

  • 本文向大家介绍将一个数组按照固定大小进行拆分成数组的方法,包括了将一个数组按照固定大小进行拆分成数组的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇将一个数组按照固定大小进行拆分成数组的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。