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

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语言实现sqrt的方法,包括了go语言实现sqrt的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了go语言实现sqrt的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Go语言程序设计有所帮助。

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

  • 本文向大家介绍易语言分割文本的方法简介,包括了易语言分割文本的方法简介的使用技巧和注意事项,需要的朋友参考一下 易语言分割文本,这个就是把文本分割出来,我给大家操作。 1、打开易语言新建一个windows程序进入下图界面 2、我们输入 分割文本 3、展开发现有3个参数 4、第一个参数 我们输入  “aa bb” 是被分割的文本 第二个参数 我们输入   “ ” 这个就是用来分割的 5、我们输入调试

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

  • 本文向大家介绍Go语言实现Fibonacci数列的方法,包括了Go语言实现Fibonacci数列的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言实现Fibonacci数列的方法。分享给大家供大家参考。具体如下: Fibonacci数列:1,1,2,3,5,8,13,21,,, (即从第三项起,每一项的值都等于前两项之后) 第一种,使用递归: 第二种,不使用递归: 经过检验,使

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