博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
seek指针大文件上传
阅读量:6867 次
发布时间:2019-06-26

本文共 1098 字,大约阅读时间需要 3 分钟。

package main

import (
    // "bufio"
    "fmt"
    "github.com/axgle/mahonia"
    // "log"
    "bytes"
    "os"
    "strings"
)
func main() {
    file, err := os.Open("hu.txt")
    defer file.Close()
    //得出文件大小
    files, _ := file.Stat()
    fileSize := files.Size()
    //7,815,168
    fmt.Println(fileSize, "fileSize")
    size := 1024 * 1024
    //循环次数
    num := (int(fileSize) + size - 1) / size
    //百分比进度条
    var list []string
    persentage := fmt.Sprintf("%.2f", 100/float64(num))
    fmt.Println(persentage, "persentage")
    fmt.Println(num)
    for i := 0; i < num; i++ {
        fmt.Println(i)
        buffer := make([]byte, 1024*1024)
        _, err = file.Read(buffer)
        if err != nil {
            fmt.Println(err)
            return
        }
        decoder := mahonia.NewDecoder("gb18030")
        if decoder == nil {
            fmt.Println("the code is not exist: ", err.Error())
            return
        }
        decodelist := decoder.ConvertString(string(buffer))
        liststring := strings.Split(decodelist, "\n")
        length := len(liststring)
        ju := []byte(liststring[length-1])
        count := bytes.Count(ju, nil)
        list = liststring[:length-1]
        newposition, _ := file.Seek(-int64(count), 1)
        fmt.Println(newposition)
    }
    fmt.Println(list)
}

转载于:https://www.cnblogs.com/zhangym/p/6233637.html

你可能感兴趣的文章
缓冲流
查看>>
mysql函数大全
查看>>
主键、外键
查看>>
图片上传
查看>>
马拉车
查看>>
PHP计算中英混输字符串长度
查看>>
java有车有房有能力最基本运用
查看>>
js创建,获取,检测cookie
查看>>
子查询:相关子查询、无关子查询
查看>>
Python-使用Magellan进行数据匹配总结
查看>>
jersey rest webservice
查看>>
java 获取指定日前的前一天
查看>>
position
查看>>
ios内存管理(转)
查看>>
Unity 屏幕外死亡的敌人的分数显示在屏幕内
查看>>
整理网上的关于 路径遍历漏洞
查看>>
H5 离线缓存的用法
查看>>
我们为什么需要Windows Workflow Foundation?(摘)
查看>>
五笔打字学习
查看>>
vector
查看>>