Kontrola CRC 32 crc new CRC 32 Cyclic

  • Slides: 9
Download presentation
Kontrola CRC 32 crc = new CRC 32( ) ; // Cyclic Redundancy Check

Kontrola CRC 32 crc = new CRC 32( ) ; // Cyclic Redundancy Check Input. Stream is = new … ; Checked. Input. Stream cis = new Checked. Input. Stream( is, crc ) ; … // reading cycle long check. Value = crc. get. Value( ) ; PJV 05 obdobně pro output Dekorátory Checked. Input. Stream resp. Checked. Output. Stream usnadňují kontolu nenarušenosti Input. Streamu resp. Output. Streamu pomocí kontroního součtu, jenž implementuje interfejs Checksum. Balíček java. util. zip k tomu nabízí třídy CRC 32 a Adler 32, které počítají vlastně jen byty a pole bytů. 1

Komprese a dekomprese dat Proudy jsou konečné posloupnosti bytů či znaků jednosměrně čtených či

Komprese a dekomprese dat Proudy jsou konečné posloupnosti bytů či znaků jednosměrně čtených či psaných. Komprimovat lze jen proud bytů (znaky nutno vyjádřit jako byty). Deflater komprimuje ( zmenší, zahustí ) proud a Inflater dekomprimuje ( zveličí, zředí ) - do/z formátu zip, gzip anebo jar. I komprimovaný proud je jen posloupnost, která však popisuje stromovou souborovou strukturu pomocí Entry vyjadřující cestu k datům. Kompresi lze ovládat na úrovni proudu i specificky i pro každé Entry. - set. Method ( Zip. Output. Stream. ( DEFLATED | STORED ) ) - DEFLATED s event. užitím set. Level( 0 … 9 ) pro sílu komprese - STORED - uložení bez komprese dat – pro Entry však nutno dodat: set. Crc( ) set. Size( ) PJV 05 2

java. util. zip java. util. jar. zip Input Stream Checked Input. Stream Output Stream

java. util. zip java. util. jar. zip Input Stream Checked Input. Stream Output Stream Filter Input. Stream Deflater Input. Stream Filter Output. Stream Inflater Input. Stream Output. Stream Inflater Output. Stream Deflater Output. Stream GZIP Input. Stream GZIP Output. Stream Zip Input. Stream Zip Output. Stream . jar Jar Input. Stream PJV 05 Checked . jar Jar Output. Stream 3

java. util. zip java. util. jar. zip java. lang Checksum Auto. Closeable Attributes .

java. util. zip java. util. jar. zip java. lang Checksum Auto. Closeable Attributes . jar java. io CRC 32 Closeable. zip Adler 32 Zip. File. jar Map Cloneable Manifest . zip Zip. Entry. jar Jar. File Jar. Entry Zip. Exception Jar. Exception Pack 200 PJV 05 Zip. Error 4

Komprese Output. Stream os = new File. Output. Stream( "C: \data. zip" ); Zip.

Komprese Output. Stream os = new File. Output. Stream( "C: \data. zip" ); Zip. Output. Stream zos = new Zip. Output. Stream( os ); // decorator Zip. Entry ze 1 = new Zip. Entry( "dir 1 \ dir 2 \ YY" ); zos. put. Next. Entry( ze 1 ); for ( int i = 0; i < 10000; i++ ) { zos. write( i ); } Zip. Entry ze 2 = new Zip. Entry( "dir 1 \ ZZ" ); zos. put. Next. Entry( ze 2 ); for ( int i = 0; i < 10000; i++ ) { zos. write( i ); } zos. close(); PJV 05 // 1. soubor // 2. soubor 5

Komprese Tzv. Deflater komprimuje proud do souborů typu. zip, . gzip nebo. jar. Output.

Komprese Tzv. Deflater komprimuje proud do souborů typu. zip, . gzip nebo. jar. Output. Stream os = new File. Output. Stream( "C: \data. zip" ); Zip. Output. Stream zos = new Zip. Output. Stream( os ); // decorator Zip. Entry ze 1 = new Zip. Entry( "dir 1 \ dir 2 \ YY" ); zos. put. Next. Entry( ze 1 ); for ( int i = 0; i < 10000; i++ ) { zos. write( i ); } Zip. Entry ze 2 = new Zip. Entry( "dir 1 \ ZZ" ); zos. put. Next. Entry( ze 2 ); for ( int i = 0; i < 10000; i++ ) { zos. write( i ); } zos. close(); Tzv. Inflater dekomprimuje soubory typu. zip, . gzip nebo. jar do proud. PJV 05 6

Dekomprese Input. Stream is = new File. Input. Stream( "C: \data. zip" ); Zip.

Dekomprese Input. Stream is = new File. Input. Stream( "C: \data. zip" ); Zip. Input. Stream zis = new Zip. Input. Stream( is ); // decorator Zip. Entry ze; int i; while ( ( ze = zis. get. Next. Entry( ) ) != null ) { while ( ( i = zis. read( ) ) != -1 ) { System. out. print( i + " " ); } } zis. close( ); PJV 05 7

Dekomprese jar Ukázka jak vypsat balíčky API String fn 1 = "C: /Program Files/Java/jdk

Dekomprese jar Ukázka jak vypsat balíčky API String fn 1 = "C: /Program Files/Java/jdk 1. 7. 0_25/jre/lib/rt. jar/" ; String fn 2 = "C: /Program Files/Java/jdk 1. 7. 0_25/src. zip" ; Input. Stream is = new File. Input. Stream( fn 1 ); Jar. Input. Stream jis = new Jar. Input. Stream( is ); Jar. Entry je = null; while ( ( je = jis. get. Next. Entry( ) ) != null ) if ( je. get. Name( ). starts. With( "java/lang/Double" ) ) break ; int i; if ( je != null ) while ( ( i = jis. read( ) ) != -1 ) System. out. print( (char) i ); jis. close( ); PJV 05 8

Třída Zip. File poslouží jen pro čtení komprimovaného souboru. Uložení entry a dat je

Třída Zip. File poslouží jen pro čtení komprimovaného souboru. Uložení entry a dat je patrně různé při kompresi Zip. Output. Streamem Některé oblíbené programy – např. Win. Zip 7. 0. – ukládájí data jinak než Zip. Output. Stream. Zip. File zf = new Zip. File ( "C: \windata. zip" ); Enumeration en = zf. entries( ); while ( en. has. More. Elements( ) ) { System. out. print( en. next. Element( ) ; } Zip. Entry ze = zf. get. Entry( "dir 1 / ZZ" ); Input. Stream is = zf. get Input. Stream( ze ) ; int i; while ( ( i = zis. read( ) ) != -1 ) { System. out. print( i + " " ) ; } zis. close( ) ; zf. close( ) ; PJV 05 9