欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語言對文件按照指定塊大小進(jìn)行分割的方法

 更新時間:2015年03月04日 10:36:14   作者:work24  
這篇文章主要介紹了go語言對文件按照指定塊大小進(jìn)行分割的方法,實例分析了Go語言文件操作的技巧,需要的朋友可以參考下

本文實例講述了go語言對文件按照指定塊大小進(jìn)行分割的方法。分享給大家供大家參考。具體如下:

復(fù)制代碼 代碼如下:

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語言程序設(shè)計有所幫助。

相關(guān)文章

  • Golang操作命令行的幾種方式總結(jié)

    Golang操作命令行的幾種方式總結(jié)

    這篇文章主要介紹了Golang操作命令行的幾種方式總結(jié),文章通過圍主題思想展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Go語言防范SQL注入CSRF及XSS攻擊實例探究

    Go語言防范SQL注入CSRF及XSS攻擊實例探究

    在本文中,我們將會介紹幾種最常見的攻擊類型,并且介紹如何使用Golang來防范這些攻擊,本文會涉及XSS攻擊、CSRF攻擊、SQL注入等,如果你想學(xué)習(xí)Golang和網(wǎng)絡(luò)安全的相關(guān)知識,那么這篇文章會是一個很好的開始
    2024-01-01
  • Go?Wails開發(fā)桌面應(yīng)用使用示例探索

    Go?Wails開發(fā)桌面應(yīng)用使用示例探索

    這篇文章主要為大家介紹了Go?Wails的使用示例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語言中的數(shù)據(jù)競爭模式詳解

    Go語言中的數(shù)據(jù)競爭模式詳解

    這篇文章主要介紹了Go語言中的數(shù)據(jù)競爭模式詳解,主要基于在Uber的Go monorepo中發(fā)現(xiàn)的各種數(shù)據(jù)競爭模式,分析了其背后的原因與分類,需要的朋友可以參考一下
    2022-07-07
  • Go語言學(xué)習(xí)之接口使用的示例詳解

    Go語言學(xué)習(xí)之接口使用的示例詳解

    Go語言并沒有類的定義,接口可以說Go語言最接近于類的實現(xiàn)方式,但是更輕量。本文將通過一些簡單的示例和大家介紹下Go語言中接口的使用,感興趣的可以學(xué)習(xí)一下
    2022-11-11
  • Go實現(xiàn)mongodb增刪改查工具類的代碼示例

    Go實現(xiàn)mongodb增刪改查工具類的代碼示例

    這篇文章主要給大家介紹了關(guān)于Go實現(xiàn)mongodb增刪改查工具類的相關(guān)資料,MongoDB是一個NoSQL數(shù)據(jù)庫,它提供了靈活的文檔存儲模型以及強(qiáng)大的查詢和操作功能,需要的朋友可以參考下
    2023-10-10
  • GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用

    GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用

    本文主要介紹了GO語言不固定參數(shù)函數(shù)與匿名函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go語言Gin框架中使用MySQL數(shù)據(jù)庫的三種方式

    Go語言Gin框架中使用MySQL數(shù)據(jù)庫的三種方式

    本文主要介紹了Go語言Gin框架中使用MySQL數(shù)據(jù)庫的三種方式,通過三種方式實現(xiàn)增刪改查的操作,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 使用client go實現(xiàn)自定義控制器的方法

    使用client go實現(xiàn)自定義控制器的方法

    本文我們來使用client-go實現(xiàn)一個自定義控制器,通過判斷service的Annotations屬性是否包含ingress/http,如果包含則創(chuàng)建ingress,如果不包含則不創(chuàng)建,對client go自定義控制器相關(guān)知識感興趣的朋友一起看看吧
    2022-05-05
  • Go語言共享內(nèi)存讀寫實例分析

    Go語言共享內(nèi)存讀寫實例分析

    這篇文章主要介紹了Go語言共享內(nèi)存讀寫方法,實例分析了共享內(nèi)存的原理與讀寫技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02

最新評論