Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package sqlSync
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
"os"
|
||||
|
||||
"goutil/fileUtil"
|
||||
"goutil/intAndBytesUtil"
|
||||
)
|
||||
|
||||
const (
|
||||
// 头部字节长度
|
||||
con_Header_Length = 4
|
||||
)
|
||||
|
||||
var (
|
||||
// 字节的大小端顺序
|
||||
byteOrder = binary.LittleEndian
|
||||
)
|
||||
|
||||
// 按照指定方式读取文本内容
|
||||
// fileObj:大文件对象
|
||||
// data:待写入的数据
|
||||
// 返回值:
|
||||
// error:写入是否存在异常
|
||||
func Write(fileObj *fileUtil.BigFile, data string) error {
|
||||
// 获得数据内容的长度
|
||||
dataLength := len(data)
|
||||
|
||||
// 将长度转化为字节数组
|
||||
header := intAndBytesUtil.Int32ToBytes(int32(dataLength), byteOrder)
|
||||
|
||||
// 将头部与内容组合在一起
|
||||
message := append(header, data...)
|
||||
|
||||
// 写入数据
|
||||
return fileObj.WriteMessage(message)
|
||||
}
|
||||
|
||||
// 从文件读取一条数据
|
||||
// fileObj:文件对象
|
||||
// 返回值:
|
||||
// result:读取到的字符串
|
||||
// err:错误信息
|
||||
func Read(fileObj *os.File) (result string, readLen int64, err error) {
|
||||
// 1. 读取头部内容
|
||||
header := make([]byte, 4)
|
||||
var n int
|
||||
n, err = fileObj.Read(header)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if n < con_Header_Length {
|
||||
err = errors.New("can not read 4 byte for read len")
|
||||
readLen = int64(n)
|
||||
return
|
||||
}
|
||||
|
||||
dataLength := intAndBytesUtil.BytesToInt32(header, byteOrder)
|
||||
|
||||
// 2. 读取指定长度的内容
|
||||
data := make([]byte, dataLength)
|
||||
n, err = fileObj.Read(data)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
readLen = int64(len(header) + int(dataLength))
|
||||
result = string(data)
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user