bash - 用C或python2.6如何切掉文件头部某些字节? (要求类似ftruncate那样无缓存操作)
高洛峰
高洛峰 2017-04-17 16:57:11
0
1
362

貌似ftruncate只能从文件头部开始截取,删除尾部的字节.
我现在需要在文件开头削掉部分字节, 但是又不想用那种写个缓存/临时文件的方法, 因为是在手机上使用,内存和硬盘都很紧张, 临时文件的方法效率也太低, 要不然一个tail命令也够了. 文件足够大, 只要删除很少字节(字节数不固定)的头部, 高效的方法应该是无视文件大小能瞬间完成操作那种.
或者有没有办法在磁盘上把文件的起始位置指定为我需要的位置(跳过部分字节), 比如要切掉一个文件的前20个字节, 磁盘记录文件的时候应该会记录文件的第一个字节的位置吧, 如果把这个记录改成第20个字节的位置应该就是最高效的文件头切割方式了.
要求使用python2.6, 如果python不好使, c也可以, 但是需要源码能被gcc-4.4.1编译, 手机上的编译器只支持到这个版本...

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

모든 응답(1)
Peter_Zhu

파일은 데이터 블록 형태로 디스크에 저장되므로 인덱스 테이블에는 바이트 주소 대신 데이터 블록 번호가 저장되지만 파일 헤더는 데이터 블록 헤더와 정렬되어야 합니다. 그럴 필요는 없으므로 tail을 삭제하는 것은 가능합니다. 예, 파일 시스템의 데이터 블록 크기가 1byte가 아니면 헤더를 삭제하면 작동하지 않지만, 있어서는 안 됩니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿