ABAP ZIP的压缩和解压

目前有需求需要产生ZIP的压缩文件,需要对二进制或着ASCII文件进行压缩。

主要的是要利用 CL_ABAP_ZIP这个class。

压缩:

   DATA izip              TYPE REF TO cl_abap_zip. 
   CREATE OBJECT izip.
    CALL METHOD izip->add
      EXPORTING
        name    = 'Detail of Repair info.XLS'
        content = xml_xstring_1.

    CALL METHOD izip->save
      RECEIVING
        zip = xzip_file.

      CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
        EXPORTING
          buffer     = xzip_file
        TABLES
          binary_tab = lt_attachment1.

解压:(可以参考标准程序:RTXWLGIM )

* create zip instance
  CREATE OBJECT lr_zip.
  lr_zip->support_unicode_names = abap_true.

  lr_zip->load( EXPORTING  zip             = ld_hex
                EXCEPTIONS zip_parse_error = 8 ).

    lr_zip->get( EXPORTING  name    = ld_name
                 IMPORTING  content = ld_hex
                 EXCEPTIONS OTHERS  = 8 ).

有的时候我们选择 cl_abap_zip 去解压文件的时候无法成功,原因是压缩的文件类型是rar或者其他,在加载的方法里面,会校验压缩文件的抬头,如下图: 

下面介绍各种文件类型的抬头:

从Ultraedit中提取出来的文件头信息,两个字符算一字节(十六进制)

JPEG (jpg),文件头:FFD8FF

PNG (png),文件头:89504E47

GIF (gif),文件头:47494638

TIFF (tif),文件头:49492A00

Windows Bitmap (bmp),文件头:424D

CAD (dwg),文件头:41433130

Adobe Photoshop (psd),文件头:38425053

Rich Text Format (rtf),文件头:7B5C727466

XML (xml),文件头:3C3F786D6C

HTML (html),文件头:68746D6C3E

Email [thorough only] (eml),文件头:44656C69766572792D646174653A

Outlook Express (dbx),文件头:CFAD12FEC5FD746F

Outlook (pst),文件头:2142444E

MS Word/Excel (xls.or.doc),文件头:D0CF11E0

MS Access (mdb),文件头:5374616E64617264204A

WordPerfect (wpd),文件头:FF575043

Postscript (eps.or.ps),文件头:252150532D41646F6265

Adobe Acrobat (pdf),文件头:255044462D312E

Quicken (qdf),文件头:AC9EBD8F

Windows Password (pwl),文件头:E3828596

ZIP Archive (zip),文件头:504B0304

RAR Archive (rar),文件头:52617221

Wave (wav),文件头:57415645

AVI (avi),文件头:41564920

Real Audio (ram),文件头:2E7261FD

Real Media (rm),文件头:2E524D46

MPEG (mpg),文件头:000001BA

MPEG (mpg),文件头:000001B3

Quicktime (mov),文件头:6D6F6F76

Windows Media (asf),文件头:3026B2758E66CF11

MIDI (mid),文件头:4D546864

二、从winhex中取出的文件头列表

File Type ExtensionsHeader

JPEG jpg;jpeg 0xFFD8FF

PNG png 0x89504E470D0A1A0A

GIF gif GIF8

TIFF tif;tiff 0x49492A00

TIFF tif;tiff 0x4D4D002A

Bit map bmp BM

AOL ART art 0x4A47040E000000

AOL ART art 0x4A47030E000000

PC Paintbrush pcx 0x0A050108

Graphics Metafile wmf 0xD7CDC69A

Graphics Metafile wmf 0x01000900

Graphics Metafile wmf 0x02000900

Enhanced Metafile emf 0x0100000058000000

Corel Draw cdr CDR

CAD dwg 0x41433130

Adobe Photoshop psd 8BPS

Rich Text Format rtf rtf

XML xml

HTML html;htm;php;php3;php4;phtml;shtml type

Email eml Delivery-date:

Outlook Express dbx 0xCFAD12FE

Outlookpst!BDN

MS Office/OLE2 doc;xls;dot;ppt;xla;ppa;pps;pot;msi;sdw;db 0xD0CF11E0A1B11AE1

MS Access mdb;mda;mde;mdt Standard J

WordPerfect wpd 0xFF575043

OpenOffice Writer sxw writer

OpenOffice Calc sxc calc

OpenOffice Math sxm math

OpenOffice Impress sxi impress

OpenOffice Draw sxd draw

Adobe FrameMaker fm <MAKERFILE

PostScript eps.or.ps;ps;eps %!PS-Adobe

Adobe Acrobat pdf %PDF-1.

Quicken qdf 0xAC9EBD8F

QuickBooks Backup qbb 0x458600000600

Sage sly.or.srt.or.slt;sly;srt;slt 0x53520100

Sage Backup 1 SAGEBACKUP

Lotus WordPro v9 lwp 0x576F726450726F

Lotus 123 v9 123 0x00001A00051004

Lotus 123 v5 wk4 0x00001A0002100400

Lotus 123 v3 wk3 0x00001A0000100400

Lotus 123 v1 wk1 0x2000604060

Windows Password pwl 0xE3828596

ZIP Archive zip;jar 0x504B0304

ZIP Archive (outdated) zip 0x504B3030

RAR Archive rar Rar!

GZ Archive gz;tgz 0x1F8B08

BZIP Archive bz2 BZh

ARJ Archive arj 0x60EA

7-ZIP Archive 7z 7z集'

Wave wav WAVE

AVI avi AVI

Real Audio ram;ra .ra?0

Real Media rm .RMF

MPEG mpg;mpeg 0x000001BA

MPEG mpg;mpeg 0x000001B3

Quicktime mov moov

Windows Media asf 0x3026B2758E66CF11

MIDI mid MThd

Win32 Executable(pe文件即可执行文件) exe;dll;drv;vxd;sys;ocx;vbx MZ

Win16 Executable (pe文件即可执行文件) exe;dll;drv;vxd;sys;ocx;vbx MZ

ELF Executable elf;; 0x7F454C4601010100

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值