ZipArchive.st
changeset 4373 b6af52242a52
parent 4372 071c7186de7b
child 4374 57cd89038719
equal deleted inserted replaced
4372:071c7186de7b 4373:b6af52242a52
  1071                                                         [exBegin]
  1071                                                         [exBegin]
  1072     |zip bytes|
  1072     |zip bytes|
  1073 
  1073 
  1074     zip := ZipArchive oldFileNamed:'foo.zip'.
  1074     zip := ZipArchive oldFileNamed:'foo.zip'.
  1075     bytes := zip extract:'bar'.
  1075     bytes := zip extract:'bar'.
  1076     zip closeFile.
  1076     zip close.
  1077                                                         [exEnd]
  1077                                                         [exEnd]
  1078 
  1078 
  1079                                                         [exBegin]
  1079                                                         [exBegin]
  1080     |zip bytes|
  1080     |zip bytes|
  1081 
  1081 
  1082     zip := ZipArchive oldFileNamed:'source/stx/libbasic2.zip'.
  1082     zip := ZipArchive oldFileNamed:'source/stx/libbasic2.zip'.
  1083     zip entries do:[:entry |
  1083     zip entries do:[:entry |
  1084         Transcript showCR:entry
  1084         Transcript showCR:entry
  1085     ].
  1085     ].
  1086     zip closeFile.
  1086     zip close.
  1087                                                         [exEnd]
  1087                                                         [exEnd]
  1088 
  1088 
  1089                                                         [exBegin]
  1089                                                         [exBegin]
  1090     |zip bytes|
  1090     |zip bytes|
  1091 
  1091 
  1092     zip := ZipArchive oldFileNamed:'source/stx/libbasic2.zip'.
  1092     zip := ZipArchive oldFileNamed:'source/stx/libbasic2.zip'.
  1093     bytes := zip extract:'TwoByteStr.st'.
  1093     bytes := zip extract:'TwoByteStr.st'.
  1094     zip closeFile.
  1094     zip close.
  1095     Transcript showCR:(bytes asString).
  1095     Transcript showCR:(bytes asString).
  1096                                                         [exEnd]
  1096                                                         [exEnd]
  1097 
  1097 
  1098 
  1098 
  1099     compatibility write check with winzip (compressed with deflate)
  1099     compatibility write check with winzip (compressed with deflate)
  1103     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1103     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1104     testFileWr := 'crcTest_resume_compressed.zip'.
  1104     testFileWr := 'crcTest_resume_compressed.zip'.
  1105 
  1105 
  1106     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1106     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1107     zipwr addFile:'crcTest_resume_compressed.txt' withContents: 'resume'.
  1107     zipwr addFile:'crcTest_resume_compressed.txt' withContents: 'resume'.
  1108     zipwr closeFile.
  1108     zipwr close.
  1109                                                         [exEnd]
  1109                                                         [exEnd]
  1110 
  1110 
  1111     compatibility read check with winzip (compressed with deflate)
  1111     compatibility read check with winzip (compressed with deflate)
  1112                                                         [exBegin]
  1112                                                         [exBegin]
  1113     |ziprd testDirectory testFileRd contents|
  1113     |ziprd testDirectory testFileRd contents|
  1116     testFileRd := 'crcTest_resume_compressed.zip'.
  1116     testFileRd := 'crcTest_resume_compressed.zip'.
  1117 
  1117 
  1118     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1118     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1119     contents := ziprd extract: ziprd entries first.
  1119     contents := ziprd extract: ziprd entries first.
  1120     contents inspect.
  1120     contents inspect.
  1121     ziprd closeFile.
  1121     ziprd close.
  1122                                                         [exEnd]
  1122                                                         [exEnd]
  1123 
  1123 
  1124     compatibility write check with winzip (uncompressed)
  1124     compatibility write check with winzip (uncompressed)
  1125                                                         [exBegin]
  1125                                                         [exBegin]
  1126     |zipwr testDirectory testFileWr|
  1126     |zipwr testDirectory testFileWr|
  1128     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1128     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1129     testFileWr := 'crcTest_resume_uncompressed.zip'.
  1129     testFileWr := 'crcTest_resume_uncompressed.zip'.
  1130 
  1130 
  1131     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1131     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1132 
  1132 
  1133     zipwr addFile:'crcTest_resume_uncompressed.txt' 
  1133     zipwr addFile:'crcTest_resume_uncompressed.txt'
  1134         withContents:'resume' 
  1134         withContents:'resume'
  1135        compressMethod:0 
  1135        compressMethod:0
  1136           asDirectory:false.
  1136           asDirectory:false.
  1137 
  1137 
  1138     zipwr closeFile.
  1138     zipwr close.
  1139                                                         [exEnd]
  1139                                                         [exEnd]
  1140 
  1140 
  1141     compatibility read check with winzip (uncompressed)
  1141     compatibility read check with winzip (uncompressed)
  1142                                                         [exBegin]
  1142                                                         [exBegin]
  1143     |ziprd testDirectory testFileRd contents|
  1143     |ziprd testDirectory testFileRd contents|
  1146     testFileRd := 'crcTest_resume_uncompressed.zip'.
  1146     testFileRd := 'crcTest_resume_uncompressed.zip'.
  1147 
  1147 
  1148     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1148     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1149     contents := ziprd extract: ziprd entries first.
  1149     contents := ziprd extract: ziprd entries first.
  1150     contents inspect.
  1150     contents inspect.
  1151     ziprd closeFile.
  1151     ziprd close.
  1152                                                         [exEnd]
  1152                                                         [exEnd]
  1153 
  1153 
  1154     read an archive with files and/or directories, fetch the entries 
  1154     read an archive with files and/or directories, fetch the entries
  1155     and create a new archive with the same content
  1155     and create a new archive with the same content
  1156                                                         [exBegin]
  1156                                                         [exBegin]
  1157     |ziprd zipwr entryDict testDirectory testFileRd testFileWr|
  1157     |ziprd zipwr entryDict testDirectory testFileRd testFileWr|
  1158 
  1158 
  1159     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1159     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1163     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1163     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1164     entryDict := Dictionary new.
  1164     entryDict := Dictionary new.
  1165     ziprd entries do: [:aFileName|
  1165     ziprd entries do: [:aFileName|
  1166         entryDict at:aFileName put:(ziprd extract: aFileName) asString.
  1166         entryDict at:aFileName put:(ziprd extract: aFileName) asString.
  1167     ].
  1167     ].
  1168     ziprd closeFile.
  1168     ziprd close.
  1169 
  1169 
  1170     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1170     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1171     entryDict keysAndValuesDo: [:key :value|
  1171     entryDict keysAndValuesDo: [:key :value|
  1172         (value size == 0) ifTrue: [
  1172         (value size == 0) ifTrue: [
  1173             zipwr addDirectory:key.
  1173             zipwr addDirectory:key.
  1174         ] ifFalse: [
  1174         ] ifFalse: [
  1175             zipwr addFile:key withContents:value
  1175             zipwr addFile:key withContents:value
  1176         ].
  1176         ].
  1177     ].
  1177     ].
  1178     zipwr closeFile.
  1178     zipwr close.
  1179                                                         [exEnd]
  1179                                                         [exEnd]
  1180 
  1180 
  1181                                                         [exBegin]
  1181                                                         [exBegin]
  1182     |zipwr ziprd testDirectory testFileWr testFileRd zs|
  1182     |zipwr ziprd testDirectory testFileWr testFileRd zs|
  1183 
  1183 
  1217     result inspect.
  1217     result inspect.
  1218     rs close.
  1218     rs close.
  1219     ziprd close.
  1219     ziprd close.
  1220                                                         [exEnd]
  1220                                                         [exEnd]
  1221 
  1221 
  1222     read an archive with files and/or directories and/or zipArchives, 
  1222     read an archive with files and/or directories and/or zipArchives,
  1223     fetch the entries (also from the include zip archives) 
  1223     fetch the entries (also from the include zip archives)
  1224     and create a new archive
  1224     and create a new archive
  1225                                                         [exBegin]
  1225                                                         [exBegin]
  1226     |ziprd zipwr entryDict testDirectory testFileRd testFileWr zipRdSub1 zipRdSub2|
  1226     |ziprd zipwr entryDict testDirectory testFileRd testFileWr zipRdSub1 zipRdSub2|
  1227 
  1227 
  1228     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1228     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1245                             self halt.
  1245                             self halt.
  1246                         ] ifFalse: [
  1246                         ] ifFalse: [
  1247                             entryDict at:aFileName2 put:(zipRdSub2 extract: aFileName2) asString.
  1247                             entryDict at:aFileName2 put:(zipRdSub2 extract: aFileName2) asString.
  1248                         ].
  1248                         ].
  1249                     ].
  1249                     ].
  1250                     zipRdSub2 closeFile.
  1250                     zipRdSub2 close.
  1251                 ] ifFalse: [
  1251                 ] ifFalse: [
  1252                     entryDict at:aFileName1 put:(zipRdSub1 extract: aFileName1) asString.
  1252                     entryDict at:aFileName1 put:(zipRdSub1 extract: aFileName1) asString.
  1253                 ].
  1253                 ].
  1254             ].
  1254             ].
  1255             zipRdSub1 closeFile.
  1255             zipRdSub1 close.
  1256         ] ifFalse: [
  1256         ] ifFalse: [
  1257             entryDict at:aFileName put:(ziprd extract: aFileName) asString.
  1257             entryDict at:aFileName put:(ziprd extract: aFileName) asString.
  1258         ].
  1258         ].
  1259     ].
  1259     ].
  1260     ziprd closeFile.
  1260     ziprd close.
  1261 
  1261 
  1262     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1262     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1263     entryDict keysAndValuesDo: [:key :value|
  1263     entryDict keysAndValuesDo: [:key :value|
  1264         (value size == 0) ifTrue: [
  1264         (value size == 0) ifTrue: [
  1265             zipwr addDirectory:key.
  1265             zipwr addDirectory:key.
  1266         ] ifFalse: [
  1266         ] ifFalse: [
  1267             zipwr addFile:key withContents:value
  1267             zipwr addFile:key withContents:value
  1268         ].
  1268         ].
  1269     ].
  1269     ].
  1270     zipwr closeFile.
  1270     zipwr close.
  1271                                                         [exEnd]
  1271                                                         [exEnd]
  1272 
  1272 
  1273 "
  1273 "
  1274 !
  1274 !
  1275 
  1275 
  1289     rdFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', rdStreamFile) asFilename readStream.
  1289     rdFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', rdStreamFile) asFilename readStream.
  1290     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1290     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1291     zipwr addFile:'crcTest_resume_compressed.txt' withContents: 'resume'.
  1291     zipwr addFile:'crcTest_resume_compressed.txt' withContents: 'resume'.
  1292     zipwr addFile:rdStreamFile fromStream: rdFileStream.
  1292     zipwr addFile:rdStreamFile fromStream: rdFileStream.
  1293 
  1293 
  1294     zipwr closeFile.
  1294     zipwr close.
  1295                                                         [exEnd]
  1295                                                         [exEnd]
  1296 
  1296 
  1297     read from zip archive a entry into memory using selector
  1297     read from zip archive a entry into memory using selector
  1298         extract:'crcTest_resume_compressed.txt'
  1298         extract:'crcTest_resume_compressed.txt'
  1299     and store an uncompressed archive entry to disk using a writeStream
  1299     and store an uncompressed archive entry to disk using a writeStream
  1311     wrFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', wrStreamFile) asFilename writeStream.
  1311     wrFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', wrStreamFile) asFilename writeStream.
  1312     (ziprd extract:'projects.zip' intoStream: wrFileStream) ifFalse: [
  1312     (ziprd extract:'projects.zip' intoStream: wrFileStream) ifFalse: [
  1313         self halt.
  1313         self halt.
  1314     ].
  1314     ].
  1315 
  1315 
  1316     ziprd closeFile.
  1316     ziprd close.
  1317     wrFileStream close.
  1317     wrFileStream close.
  1318                                                         [exEnd]
  1318                                                         [exEnd]
  1319 
  1319 
  1320     add (compressed) to new zip archive a real file contents from disk e.g. a pdf
  1320     add (compressed) to new zip archive a real file contents from disk e.g. a pdf
  1321     identified by a readStream
  1321     identified by a readStream
  1322     using selector
  1322     using selector
  1323         addFile:  fromStream:  compressMethod: 
  1323         addFile:  fromStream:  compressMethod:
  1324                                                         [exBegin]
  1324                                                         [exBegin]
  1325     |zipwr testDirectory testFileWr rdStreamFile rdFileStream|
  1325     |zipwr testDirectory testFileWr rdStreamFile rdFileStream|
  1326 
  1326 
  1327     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1327     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1328     testFileWr := 'streamtest_compressed.zip'.
  1328     testFileWr := 'streamtest_compressed.zip'.
  1330 
  1330 
  1331     rdFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', rdStreamFile) asFilename readStream.
  1331     rdFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', rdStreamFile) asFilename readStream.
  1332     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1332     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1333     zipwr addFileCompressed:rdStreamFile fromStream: rdFileStream.
  1333     zipwr addFileCompressed:rdStreamFile fromStream: rdFileStream.
  1334 
  1334 
  1335     zipwr closeFile.
  1335     zipwr close.
  1336                                                         [exEnd]
  1336                                                         [exEnd]
  1337 
  1337 
  1338     read from zip archive a compressed entry e.g. a pdf and store the contents 
  1338     read from zip archive a compressed entry e.g. a pdf and store the contents
  1339     to disk using a readStream
  1339     to disk using a readStream
  1340     using selector
  1340     using selector
  1341         readStreamFor: rdStreamFile 
  1341         readStreamFor: rdStreamFile
  1342                                                         [exBegin]
  1342                                                         [exBegin]
  1343     |ziprd testDirectory testFileRd wrStreamFile wrFileStream|
  1343     |ziprd testDirectory testFileRd wrStreamFile wrFileStream|
  1344 
  1344 
  1345     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1345     testDirectory := 'C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\'.
  1346     testFileRd := 'streamtest_compressed.zip'.
  1346     testFileRd := 'streamtest_compressed.zip'.
  1351     wrFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', wrStreamFile) asFilename writeStream.
  1351     wrFileStream := ('C:\Dokumente und Einstellungen\stefan\Eigene Dateien\tmp\', wrStreamFile) asFilename writeStream.
  1352     (ziprd extract:'test.pdf' intoStream: wrFileStream) ifFalse: [
  1352     (ziprd extract:'test.pdf' intoStream: wrFileStream) ifFalse: [
  1353         self halt.
  1353         self halt.
  1354     ].
  1354     ].
  1355 
  1355 
  1356     ziprd closeFile.
  1356     ziprd close.
  1357     wrFileStream close.
  1357     wrFileStream close.
  1358                                                         [exEnd]
  1358                                                         [exEnd]
  1359 
  1359 
  1360 "
  1360 "
  1361 !
  1361 !
  1373 
  1373 
  1374     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1374     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1375 
  1375 
  1376     zipwr addArchiveDirectory: 'attachments' fromOsDirectory: (testDirectory,zipDirectory).
  1376     zipwr addArchiveDirectory: 'attachments' fromOsDirectory: (testDirectory,zipDirectory).
  1377 
  1377 
  1378     zipwr closeFile.
  1378     zipwr close.
  1379                                                         [exEnd]
  1379                                                         [exEnd]
  1380 
  1380 
  1381     read from zip archive all entries which are stored in an archive directory (uncompressed)
  1381     read from zip archive all entries which are stored in an archive directory (uncompressed)
  1382     and store all those entries in a directory on the file system
  1382     and store all those entries in a directory on the file system
  1383         restoreOsDirectory:  fromArchiveDirectory:
  1383         restoreOsDirectory:  fromArchiveDirectory:
  1388     testFileRd := 'zipDirectoryTest.zip'.
  1388     testFileRd := 'zipDirectoryTest.zip'.
  1389     zipDirectory := 'xxx'.
  1389     zipDirectory := 'xxx'.
  1390 
  1390 
  1391     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1391     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1392     ziprd restoreOsDirectory: (testDirectory,zipDirectory) fromArchiveDirectory: 'attachments'.
  1392     ziprd restoreOsDirectory: (testDirectory,zipDirectory) fromArchiveDirectory: 'attachments'.
  1393     ziprd closeFile.
  1393     ziprd close.
  1394                                                         [exEnd]
  1394                                                         [exEnd]
  1395 
  1395 
  1396 
  1396 
  1397     add to new zip archive recursive the contents of a directory (compressed)
  1397     add to new zip archive recursive the contents of a directory (compressed)
  1398         addArchiveDirectoryCompressed:  fromOsDirectory:
  1398         addArchiveDirectoryCompressed:  fromOsDirectory:
  1405 
  1405 
  1406     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1406     zipwr := ZipArchive newFileNamed:(testDirectory, testFileWr).
  1407 
  1407 
  1408     zipwr addArchiveDirectoryCompressed: 'attachments' fromOsDirectory: (testDirectory,zipDirectory).
  1408     zipwr addArchiveDirectoryCompressed: 'attachments' fromOsDirectory: (testDirectory,zipDirectory).
  1409 
  1409 
  1410     zipwr closeFile.
  1410     zipwr close.
  1411                                                         [exEnd]
  1411                                                         [exEnd]
  1412 
  1412 
  1413     read from zip archive all entries which are stored in an archive directory (compressed)
  1413     read from zip archive all entries which are stored in an archive directory (compressed)
  1414     and store all those entries in a directory on the file system
  1414     and store all those entries in a directory on the file system
  1415         restoreOsDirectory:  fromArchiveDirectory:
  1415         restoreOsDirectory:  fromArchiveDirectory:
  1420     testFileRd := 'zipDirectoryTestCompressed.zip'.
  1420     testFileRd := 'zipDirectoryTestCompressed.zip'.
  1421     zipDirectory := 'xxx-compressed'.
  1421     zipDirectory := 'xxx-compressed'.
  1422 
  1422 
  1423     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1423     ziprd := ZipArchive oldFileNamed:(testDirectory, testFileRd).
  1424     ziprd restoreOsDirectory: (testDirectory,zipDirectory) fromArchiveDirectory: 'attachments'.
  1424     ziprd restoreOsDirectory: (testDirectory,zipDirectory) fromArchiveDirectory: 'attachments'.
  1425     ziprd closeFile.
  1425     ziprd close.
  1426                                                         [exEnd]
  1426                                                         [exEnd]
  1427 
  1427 
  1428 "
  1428 "
  1429 !
  1429 !
  1430 
  1430