seek指针大文件上传

时间:2023-03-09 07:34:34
seek指针大文件上传

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)

}