一种cpio文件的操作方法及装置的制造方法

文档序号:9261389阅读:801来源:国知局
一种cpio文件的操作方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机文件技术领域,尤其涉及一种CP1文件的操作方法及装置。
【背景技术】
[0002]CP1文件格式是UNIX操作系统的文件格式。CP1文件本质上是一个文件集合,包涵多个子文件,每个子文件包括文件header和文件内容content,包含一系列文件信息及内容,诸如文件名、绝对路径、时间戳、设备类型及版本、用户组及访问权限、文件版本、文件大小、文件内容等。Linux上利用cp1程序操作CP1文件,包括访问、仓Il建、读写等。
[0003]目前采用Android系统的便携式电子设备如平板上加载有CP1文件。在开发过程中,需要通过相应的接口从便携式电子设备上下载CP1文件,对下载的CP1文件进行修改后再加载到便携式电子设备上,如修改ramdisk (虚拟内存盘)等CP1文件以实现客户个性化定制。
[0004]目前基于Windows平台工具修改便携式电子设备加载的CP1文件,具体方案如下:
[0005]cygwin是一个在windows平台上运行的unix模拟环境,通过在Windows上安装cygwin,利用cygwin自带的cp1.exe程序将读取的CP1文件散开到本地文件夹;修改完成后再利用cp1.exe程序将本地文件夹制作成CP1文件,最后再将CP1文件加载到采用Android系统的便携式电子设备上。
[0006]CP1文件本质上就是将一堆CP1子文件(包括文件和目录形式的子文件)的内容按格式堆砌在一起,将CP1文件存储到本地时,由于CP1文件是UNIX操作系统的文件格式,但用户是看不到的这些文件的,利用cygwin自带的cp1.exe程序执行散开操作,可以使用户在磁盘上看到CP1文件中每个子文件。
[0007]基于在windows平台上运行的cygwin读写CP1文件有如下缺点:
[0008]I)将读取的CP1文件散开到本地文件夹时,目标磁盘必须为NTFS (NewTechnology File System)文件系统格式。
[0009]因为cp1格式中文件属性为4字节,FAT32 (File Allocat1n Table)文件系统的文件属性只有2字节;如果散开到FAT32格式的磁盘下会导致属性丢失,将制作的CP1文档重新加载到便携式电子设备上会出现各种访问权限问题。
[0010]cygwin自带的cp1.exe的临时目录一般都在系统盘下,因此本地文件夹也在系统盘,如果系统盘不是NTFS格式就导致cp1.exe不能正常使用。
[0011]2)散开再重新制作这个过程针对的是整个CP1文件,如果仅修改其中一个文件,也需要将整个CP1文件散开,在修改完其中一个文件后还要重新做成CP1整合文件,不能在不散开CP1文件的情况下单独对其中的某个文件进行编辑,效率低下。
[0012]3) cp1.exe部署发布时必须包含cygwin相应的动态库DLL。
[0013]基于以上缺陷,需要考虑如何实现在Windows平台上快速无损读写CP1文件。

【发明内容】

[0014]本发明提供一种CP1文件的操作方法及装置,能够实现在Windows平台上快速无损读写CP1文件。
[0015]本发明提供一种CP1文件的操作方法,包括:
[0016]按照二进制文件的解析方式遍历包括多个子文件的CP1文件,识别并记录每个子文件的文件头及该子文件相对于CP1文件起始位置的绝对偏移,所述文件头包括子文件的文件名及文件大小;
[0017]按照子文件的顺序在内存中创建包括多个条目的条目索引表,其中每一个条目包括一个子文件的文件头及绝对偏移;
[0018]每次接收到操作指令时,根据内存中的条目索引表,定位需要进行操作的子文件的位置;
[0019]对相应位置的子文件进行操作,当确定操作后条目改变时,更新内存中的条目索引表。
[0020]优选地,通过如下任一个或任意多个操作指令完成对CP1文件的操作:
[0021]读操作指令;重命名操作指令;对文件内容的编辑操作指令;删除操作指令;新增操作指令。
[0022]优选地,当接收到操作指令为读操作指令或重命名操作指令或对文件内容的编辑操作指令或删除操作指令时,定位需要进行操作的子文件的位置,具体包括:
[0023]根据需要进行操作的子文件的文件名,在条目索引表查找到包含该文件名的条目,根据该条目中的绝对偏移定位需要进行操作的子文件位置;
[0024]当接收到的操作指令为新增操作指令,定位需要进行操作的子文件的位置,具体包括:
[0025]根据最后一个条目中文件头中文件的大小及绝对偏移,定位CP1文件的尾部位置为需要进行操作的子文件位置。
[0026]优选地,当接收到的操作指令为读操作指令时,确定操作后条目不会改变,对相应位置的子文件进行操作,具体包括:
[0027]从绝对偏移的位置读取文件头,根据文件头中的文件大小读取文件内容;
[0028]当接收到的操作指令为重命名操作指令时,对相应位置的子文件进行操作,当确定操作后条目改变时,更新内存中的条目索引表,具体包括:
[0029]若重命名后文件名长度不变,则修改文件头中的相应的文件名,若重命名后文件名长度变短或变长,则将相应的文件名对应的子文件的文件内容及之后的所有子文件前移或后移,修改文件头中的相应的文件名;
[0030]若重命名后文件名长度不变,则同步更新条目索引表中的文件名,若重命名后文件名长度变短或变长,则重新遍历CP1文件更新内存中的条目索引表;
[0031]当接收到的操作指令为对文件内容的编辑操作指令时,对相应位置的子文件进行操作,当确定操作后条目改变时,更新内存中的条目索引表,具体包括:
[0032]若编辑后文件内容长度不变,则直接覆盖相应的文件内容,若编辑后文件内容长度变长或变短,则先将相应的文件内容之后所有的CP1文件后移或前移,再覆盖相应的文件内容;
[0033]若编辑后文件内容长度变长或变短,则修改文件头中的文件大小,并重新遍历CP1文件更新内存中的条目索引表;
[0034]当接收到的操作指令为新增操作指令时,对相应位置的子文件进行操作,当确定操作后条目改变时,更新内存中的条目索引表,具体包括:
[0035]从CP1文件的尾部位置开始,存储新的子文件;
[0036]根据该子文件的文件头,在条目索引表中增加该子文件的条目。
[0037]优选地,所述子文件的形式为文件或子目录,当接收到的操作指令为对文件的内容的删除操作指令时,对相应位置的子文件进行操作,当确定操作后条目改变时,更新内存中的条目索引表,具体包括:
[0038]删除相应位置的子文件,将该子文件之后的所有子文件前移;
[0039]完成前移后重新遍历CP1文件更新内存中的条目索引表;
[0040]当接收到的操作指令为对子目录的删除操作指令时,对相应位置的子文件进行操作,当确定操作后条目改变时,更新内存中的条目索引表,具体包括:
[0041]删除相应位置的子目录及其所在条目,将该子目录之后的所有子文件前移,完成前移后确定操作后条目改变并更新内存中的条目索引表;
[0042]重复如下步骤至查找不到包含删除的子目录的子文件:重新遍历条目索引表,确定子文件的文件名中包含删除的子目录时,删除该子文件,将该子文件之后的所有子文件前移,完成前移后确定操作后条目改变并更新内存中的条目索引表。
[0043]本发明还提供一种CP1文件的操作装置,包括:
[0044]解析单元,用于按照二进制文件的解析方式遍历包括多个子文件的CP1文件,识别并记录每个子文件的文件头及该子文件相对于CP1文件起始位置的绝对偏移,所述文件头包括子文件的文件名及文件大小;
[0045]索引建立单元,用于按照子文件的顺序在内存中创建包括多个条目的条目索引表,其中每一个条目包括一个子文件的文件头及绝对偏移;
[0046]定位单元,用于每次接收到操作指令时,根据内存中的条目索引表,定位需要进行操作的子文件的位置;
[0047]操作及索引更新单元,用于对相应位置的子文件进行操作,当确定操作后条目改变时,更新内存中的条目索引表。
[0048]优选地,所述定位单元和操作及索引更新单元通过如下任一个或任意多个操作指令完成
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1