GetFileInfo 返回file从末端开始向前查找到的以flag开头到文件末尾的字节数组,和相对于文件中0位置的偏移量,以及err

// GetFileInfo 返回file从末端开始向前查找到的以flag开头到文件末尾的字节数组,和相对于文件中0位置的偏移量,以及err
func GetFileInfo(filePath, flag string) (infoBytes []byte, offset int64, err error) {file, err0 := os.Open(filePath)defer file.Close()if err0 != nil {return nil, -1, err0}flagLength := int64(len(flag))if flagLength == 0 {return nil, -1, errors.New("GetFileInfo: the length of the flag is zero")}fileInfo, err1 := file.Stat()if err1 != nil {return nil, -1, err1}bufferLength := int64(1024)if bufferLength > fileInfo.Size() {bufferLength = fileInfo.Size()}if bufferLength <= flagLength {bufferLength = flagLength + 1}if fileInfo.Size() < flagLength {return nil, -1, errors.New("GetFileInfo: the length of the flag is greater than the length of the file")}flagBytes := []byte(flag)buffer := make([]byte, bufferLength)for newOffset, seekErr := file.Seek(-bufferLength, 2); seekErr == nil; {_, _ = file.Read(buffer)oldOffset := newOffsetnewOffset, seekErr = file.Seek(oldOffset-bufferLength+flagLength, 0)if index := bytes.Index(buffer, flagBytes); index >= 0 {infoBytes = make([]byte, fileInfo.Size()-(oldOffset+int64(index)))offset = oldOffset + int64(index)_, _ = file.Seek(offset, 0)_, _ = file.Read(infoBytes)return}}return nil, -1, errors.New("GetFileInfo: not found: " + flag)
}

GetFileInfo相关推荐

  1. ipad html 自定义裁剪图片大小,移动端图片裁剪上传插件 Mavatar.js(原创)

    插件描述:移动端头像上传,支撑头像预览和放大缩小平移,内置上传至后端请求方法. 注:请在移动端用手势查看缩放效果,PC端无法缩放 Mavatar 移动端头像上传,支撑头像预览和放大缩小平移,内置上传至 ...

  2. ASP.NET Core的配置(5):配置的同步[设计篇]

    本节所谓的"配置同步"主要体现在两个方面:其一,如何监控配置源并在其变化的时候自动加载其数据,其目的是让应用中通过Configuration对象承载的配置与配置源的数据同步:其二. ...

  3. 如何快速采集分析平台日志,并进行展示监控?

    来自:DBAplus社群 作者介绍 小火牛,项目管理高级工程师,具有多年大数据平台运维管理及开发优化经验.管理过多个上千节点集群,擅长对外多租户平台的维护开发.信科院大数据性能测试.功能测试主力,大厂 ...

  4. 基于 Alluxio 的 HDFS 多集群统一入口的实现

    回顾:大数据平台技术栈 (ps:可点击查看),今天就来说说其中的Alluxio! 本文作者郭业俊,同济大学自动化专业硕士毕业,现担任苏宁易购大数据存储平台负责人.主要负责苏宁Hadoop分布式文件系统 ...

  5. nodejs文件服务器断点续传,基于Nodejs的大文件上传之断点续传

    接着<扒一扒Nodejs formidable的onPart>和<也说文件上传之兼容IE789的进度条---丢掉flash>:前面已完成兼容IE789的大文件上传:无flash ...

  6. PHP高级编程SPL

    这几天,我在学习PHP语言中的SPL. 这个东西应该属于PHP中的高级内容,看上去非常复杂,可是非常实用,所以我做了长篇笔记.不然记不住,以后要用的时候,还是要从头学起. 因为这是供自己參考的笔记,不 ...

  7. Windows8.1+Eclipse搭建Hadoop2.7.2本地模式开发环境

    下面介绍如何在Windows8.1上搭建hadoop2.7.2的本地模式开发环境,为后期做mapreduce的开发做准备. 在搭建开发环境之前,首先选择开发工具,就是大家都很熟悉的Eclipse(本人 ...

  8. .net 应用迁移到Mono 工具 (Moma)

    Mono Migration Analyzer (Moma) 是一个用于开发者使用的MS .net下开发的应用程序迁移到Mono平台的不兼容性检测工具.工具通过分析.dll或者.exe程序集的代码是否 ...

  9. yii2.0使用ueditior完成上传单张,多张图片,上传视频等操作

    一.前言 由于工作需求需要集成富文本编辑器,本来是想要选用之前用过的WangEditor的,但是考虑到WangEditor还是比较小众,所以最终选择了没用过的Uedtor,这篇文章主要讲述了Yii2. ...

最新文章

  1. 除了计算机中的二进制还有哪些进位制,除了十进位制还有什么进位制
  2. Vim 高亮显示单词并查找
  3. PaperWeekly 第52期 | 更别致的词向量模型:Simpler GloVe - Part 1
  4. 打包bat等文件成exe,双击运行不显示dos窗口,exe不报毒
  5. 【New Feature】阿里云OSS同城区域冗余存储重磅发布,提供云上同城容灾服务能力!...
  6. 拖动同级别元素显示辅助线,辅助对齐,吸附.
  7. 消息中间件Kafka与RabbitMQ谁更胜一筹?
  8. xcode java mac_mac 下常用命令(xcode常用命令,环境相关等)
  9. codeforces734E
  10. ESP32烧录bin,乐鑫下载工具使用flash_download_tool
  11. 装什么软件测试笔记本耐用,我买了新电脑,用什么软件测试比较好?
  12. 【HigherHRNet】 HigherHRNet 详解之 HigherHRNet的热图回归代码
  13. Dev-C++5.11游戏创作之简易小炸弹
  14. 六级阅读真题词组(2016)
  15. 信息安全建设之基于开源搭建零信任网关-原理篇
  16. CRM下午茶(七)-潜在客户流失排查
  17. 高通量芯片数据分析:转录组芯片数据分析
  18. 蹦极模型matlab仿真,科学网—蹦极的数学建模及其龙格-库塔法求解方法 - 赵也非的博文...
  19. 蓝鲸平台本地上传大文件ERR_CONNECTION_RESE报错处理client intended to send too large body:,server: paas.blueking.com
  20. 请把此文转发给你的另一半

热门文章

  1. Linux Network Programming
  2. 《HTML重构》读书笔记思维导图
  3. dz论坛开启图片压缩功能
  4. 新生寄语_文学作品在公共领域重获新生
  5. python读取cad_python3读取autocad图形文件.py实例
  6. 字符串魔法(easy)
  7. 安卓高级6 SnackBar
  8. MYSQL网络数据库管理
  9. SPWM基本原理详解(图文并茂+公式推导+C程序实现)
  10. ansible playbook play常用参数配置