go语言对文件按照指定块大小进行分割的方法
“两颗冥王星”通过精心收集,向本站投稿了5篇go语言对文件按照指定块大小进行分割的方法,下面是小编收集整理后的go语言对文件按照指定块大小进行分割的方法,仅供参考,希望能够帮助到大家。
篇1:go语言对文件按照指定块大小进行分割的方法
作者:work24 字体:[增加 减小] 类型:
这篇文章主要介绍了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语言程序设计有所帮助,
篇2:python按照多个字符对字符串进行分割的方法
作者:八大山人 字体:[增加 减小] 类型:转载
这篇文章主要介绍了python按照多个字符对字符串进行分割的方法,涉及Python中正则表达式匹配的技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了python按照多个字符对字符串进行分割的方法,分享给大家供大家参考。具体分析如下:
这段python代码通过这规则表达式对字符串进行分割,使用w作为分割符,只要不是字母和数字的就会被分割开来,
import reDATA = “Hey, you - what are you doing here! welcome to jb51?”print re.findall(r“[w‘]+”, DATA)
输出结果如下
代码如下:
[‘Hey‘, ‘you‘, ‘what‘, ‘are‘, ‘you‘, ‘doing‘, ‘here‘, ‘welcome‘, ‘to‘, ‘jb51‘
]
希望本文所述对大家的Python程序设计有所帮助。
篇3:python对指定目录下文件进行批量重命名的方法
作者:work24 字体:[增加 减小] 类型:
这篇文章主要介绍了python对指定目录下文件进行批量重命名的方法,涉及Python中replace及join方法的使用技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了python对指定目录下文件进行批量重命名的方法,分享给大家供大家参考。具体如下:
这段python代码可对c:temp目录下的所有文件名为”scroll_1”文件替换为”scroll_00”
import spath = ‘c:temp‘for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True: newname = file.replace(“scroll_1”, “scroll_00”) os.rename(os.path.join(path,file),os.path.join(path,newname)) print(file)
希望本文所述对大家的Python程序设计有所帮助,
篇4:Go语言压缩和解压缩tar.gz文件的方法
作者:不吃皮蛋 字体:[增加 减小] 类型:转载
golang处理压缩包,最常用的就是tar.gz了,这里写了一个测试一下。
压缩文件:
代码如下:
package main
import (
“fmt”
“os”
“io”
“archive/tar”
“compress/gzip”
)
func main {
// file write
fw, err := os.Create(“tar/lin_golang_src.tar.gz”)
if err != nil {
panic(err)
}
defer fw.Close()
// gzip write
gw := gzip.NewWriter(fw)
defer gw.Close()
// tar write
tw := tar.NewWriter(gw)
defer tw.Close()
// 打开文件夹
dir, err := os.Open(“file/”)
if err != nil {
panic(nil)
}
defer dir.Close()
// 读取文件列表
fis, err := dir.Readdir(0)
if err != nil {
panic(err)
}
// 遍历文件列表
for _, fi := range fis {
// 逃过文件夹, 我这里就不递归了
if fi.IsDir() {
continue
}
// 打印文件名称
fmt.Println(fi.Name())
// 打开文件
fr, err := os.Open(dir.Name() + “/” + fi.Name())
if err != nil {
panic(err)
}
defer fr.Close()
// 信息头
h := new(tar.Header)
h.Name = fi.Name()
h.Size = fi.Size()
h.Mode = int64(fi.Mode())
h.ModTime = fi.ModTime()
// 写信息头
err = tw.WriteHeader(h)
if err != nil {
panic(err)
}
// 写文件
_, err = io.Copy(tw, fr)
if err != nil {
panic(err)
}
}
fmt.Println(“tar.gz ok”)
}
解压文件:
代码如下:
package main
import (
“fmt”
“os”
“io”
// “time”
“archive/tar”
“compress/gzip”
)
func main() {
// file read
fr, err := os.Open(“tar/lin_golang_src.tar.gz”)
if err != nil {
panic(err)
}
defer fr.Close()
// gzip read
gr, err := gzip.NewReader(fr)
if err != nil {
panic(err)
}
defer gr.Close()
// tar read
tr := tar.NewReader(gr)
// 读取文件
for {
h, err := tr.Next()
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
// 显示文件
fmt.Println(h.Name)
// 打开文件
fw, err := os.OpenFile(“file2/” + h.Name, os.O_CREATE | os.O_WRONLY, 0644/*os.FileMode(h.Mode)*/)
if err != nil {
panic(err)
}
defer fw.Close()
// 写文件
_, err = io.Copy(fw, tr)
if err != nil {
panic(err)
}
}
fmt.Println(“un tar.gz ok”)
}
这样以后打包下载东西的时候就可以使用了,
希望本文所述对大家的Go语言程序设计有所帮助。
篇5:go语言检测文件是否存在的方法
作者:work24 字体:[增加 减小] 类型:转载
这篇文章主要介绍了go语言检测文件是否存在的方法,实例分析了Go语言文件操作的相关技巧,需要的朋友可以参考下
本文实例讲述了go语言检测文件是否存在的方法,分享给大家供大家参考。具体分析如下:
go语言检测文件是否存在,首先创建一个FileInfo,如果不报错,再通过 IsDir()检查是否是目录
代码如下:
finfo, err := os.Stat(“filename.txt”)
if err != nil {
// no such file or dir
return
}
if finfo.IsDir() {
// it‘s a file
} else {
// it‘s a directory
}
希望本文所述对大家的Go语言程序设计有所帮助,
【go语言对文件按照指定块大小进行分割的方法】相关文章:






文档为doc格式