بایگانی archive
ساختن و بازکردن بایگانیهای زیپ و تار، خواندن RAR و فشردهسازی پرونده با جیزیپ.
واردسازی بایگانی
بایگانی چند پرونده را در یک پرونده جمع میکند. زیپ هر پرونده را جدا فشرده میکند؛ تار فقط پروندهها را پشتسرهم میگذارد و معمولاً بعد با جیزیپ فشرده میشود (.tar.gz).
روالها هم در حافظه کار میکنند و هم با پرونده. دادهی بایگانی را با نشانی و طول میگیرند، مثل ب.data و ب.len از یک بافر بایت.
گونهها
ورودی پرونده تار TarFileInput
ساختار ورودی پرونده تار| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| name | name | رشته = "" | نام درون بایگانی. |
| data_ptr | data_ptr | تهی* | نشانی محتوا. |
| data_len | data_len | صحیح = 0 | طول محتوا. |
| is_dir | is_dir | منطقی = نادرست | ورودی پوشه است. |
واردسازی بایگانی
واردسازی فشرده سازی
روال ریشه:
ب := فشرده سازی.بافر از رشته("خط اول\nخط دوم\n")
ناپایا پروندهها := وکتور {} برگردان وکتور<بایگانی.ورودی پرونده تار>
پروندهها.بیفزا(بایگانی.ساخت ورودی پرونده تار("notes"، پوچ، ۰، درست))
پروندهها.بیفزا(بایگانی.ساخت ورودی پرونده تار("notes/a.txt"، ب.data، ب.len، نادرست))
ت := بایگانی.ساخت تار(پروندهها)
سرچاپ ت.len % ۵۱۲
ناپایا فهرست := بایگانی.فهرست تار(ت.data، ت.len)
هر م در فهرست:
سرچاپ م.name، م.size، م.is_dir
پایان
بایگانی.آزادسازی فهرست(فهرست)
ناپایا خوب := نادرست
الف := بایگانی.استخراج با نام از تار(ت.data، ت.len، "notes/a.txt"، خوب)
سرچاپ خوب، فشرده سازی.بافر به رشته(الف)
سرچاپ بایگانی.ساخت پرونده تار(پروندهها، "out.tar")، بایگانی.استخراج همه از تار(ت.data، ت.len، "untarred")
سرچاپ بایگانی.فشرده سازی پرونده جی زیپ("out.tar"، "out.tar.gz")، بایگانی.کدگشایی پرونده جی زیپ("out.tar.gz"، "back.tar")
ک := بایگانی.خواندن پرونده دودویی("back.tar"، خوب)
سرچاپ خوب، ک.len == ت.len
بایگانی.اطمینان از پوشه("a/b/c")
سرچاپ بایگانی.نوشتن پرونده دودویی("a/b/c/x.bin"، ب.data، ۳)، بایگانی.نوشتن پرونده دودویی از بافر("a/b/c/y.bin"، ب)
ناپایا ب۲ := فشرده سازی.بافر بایت جدید()
بایگانی.نوشتن شانزده بیتی کم ارزشاول(ب۲، ۵۱۳)
بایگانی.نوشتن عدد۳۲ کم ارزشاول(ب۲، ۷۰۰۰۰)
سرچاپ بایگانی.خواندن شانزده بیتی کم ارزشاول(ب۲.data، ۰)، بایگانی.خواندن عدد۳۲ کم ارزشاول(ب۲.data، ۲)
پایانمدخل Entry
ساختار مدخل| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| name | name | رشته = "" | نام و مسیر درون بایگانی. |
| size | size | صحیح۶۴ | اندازهی اصلی بر حسب بایت. |
| compressed_size | compressed_size | صحیح۶۴ | اندازهی فشرده. |
| is_dir | is_dir | منطقی = نادرست | مدخل پوشه است. |
| method | method | صحیح = 0 | روش فشردهسازی: صفر ذخیرهی ساده، ۸ DEFLATE. |
| crc32 | crc32 | طبیعی۳۲ | چکجمع محتوا. |
| mtime | mtime | صحیح۶۴ | زمان تغییر بر حسب ثانیه از مبدأ یونیکس. |
واردسازی بایگانی
واردسازی فشرده سازی
روال ریشه:
متن := "سلام بایگانی، سلام بایگانی، سلام بایگانی"
ب := فشرده سازی.بافر از رشته(متن)
ناپایا پروندهها := وکتور {} برگردان وکتور<بایگانی.ورودی پرونده زیپ>
پروندهها.بیفزا(بایگانی.ساخت ورودی پرونده زیپ("docs/"، پوچ، ۰، ۰))
پروندهها.بیفزا(بایگانی.ساخت ورودی پرونده زیپ("docs/a.txt"، ب.data، ب.len، ۸))
پروندهها.بیفزا(بایگانی.ساخت ورودی پرونده زیپ("b.txt"، ب.data، ۵، ۰))
ز := بایگانی.ساخت زیپ(پروندهها)
ناپایا فهرست := بایگانی.فهرست زیپ(ز.data، ز.len)
هر م در فهرست:
سرچاپ م.name، م.size، م.compressed_size < م.size، م.is_dir، م.method
پایان
بایگانی.آزادسازی فهرست(فهرست)
ناپایا خوب := نادرست
الف := بایگانی.استخراج با نام از زیپ(ز.data، ز.len، "docs/a.txt"، خوب)
سرچاپ خوب، فشرده سازی.بافر به رشته(الف) == متن
_ := بایگانی.استخراج با نام از زیپ(ز.data، ز.len، "نیست"، خوب)
سرچاپ خوب
سرچاپ بایگانی.ساخت پرونده زیپ(پروندهها، "out.zip")، بایگانی.استخراج همه از زیپ(ز.data، ز.len، "unzipped")
خوانده := بایگانی.خواندن پرونده دودویی("unzipped/docs/a.txt"، خوب)
سرچاپ خوب، خوانده.len == ب.len
سرچاپ بایگانی.آیا آر ای آر است(ز.data، ز.len)، بایگانی.فهرست آر ای آر(ز.data، ز.len).طول()
_ := بایگانی.استخراج با نام از آر ای آر(ز.data، ز.len، "x"، خوب)
سرچاپ خوب، بایگانی.استخراج همه از آر ای آر(ز.data، ز.len، "rar-out")
پایانورودی پرونده زیپ ZipFileInput
ساختار ورودی پرونده زیپ| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| name | name | رشته = "" | نام درون بایگانی؛ نام پوشه با / تمام میشود. |
| data_ptr | data_ptr | تهی* | نشانی محتوا. |
| data_len | data_len | صحیح = 0 | طول محتوا. |
| method | method | صحیح = 8 | صفر برای ذخیرهی ساده، ۸ برای DEFLATE. |
نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
روالها
فشرده سازی پرونده جی زیپ GzipCompressFile
روال فشرده سازی پرونده جی زیپ(inpath: رشته، outpath: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
کدگشایی پرونده جی زیپ GzipDecompressFile
روال کدگشایی پرونده جی زیپ(inpath: رشته، outpath: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
ساخت ورودی پرونده تار MakeTarFileInput
روال ساخت ورودی پرونده تار(name: رشته، data_ptr: تهی*، data_len: صحیح، is_dir: منطقی): ورودی پرونده تارنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
ساخت تار TarCreate
روال ساخت تار(files: وکتور<ورودی پرونده تار>): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
ساخت پرونده تار TarCreateFile
روال ساخت پرونده تار(files: وکتور<ورودی پرونده تار>، outpath: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
فهرست تار TarList
روال فهرست تار(p: تهی*، n: صحیح): وکتور<مدخل>نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
استخراج با نام از تار TarExtractByName
روال استخراج با نام از تار(p: تهی*، n: صحیح، name: رشته، ok &: منطقی): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
استخراج همه از تار TarExtractAll
روال استخراج همه از تار(p: تهی*، n: صحیح، destdir: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
خواندن پرونده دودویی ReadBinaryFile
روال خواندن پرونده دودویی(path: رشته، ok &: منطقی): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
نوشتن پرونده دودویی WriteBinaryFile
روال نوشتن پرونده دودویی(path: رشته، p: تهی*، n: صحیح): منطقیn بایت را در پرونده مینویسد.نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
نوشتن پرونده دودویی از بافر WriteBinaryFileBuf
روال نوشتن پرونده دودویی از بافر(path: رشته، b: compress.ByteBuf): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
اطمینان از پوشه EnsureDir
روال اطمینان از پوشه(dir: رشته)نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
خواندن شانزده بیتی کم ارزشاول LEGet16
روال خواندن شانزده بیتی کم ارزشاول(p: تهی*، off: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
خواندن عدد۳۲ کم ارزشاول LEGet32
روال خواندن عدد۳۲ کم ارزشاول(p: تهی*، off: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
نوشتن شانزده بیتی کم ارزشاول LEPut16
روال نوشتن شانزده بیتی کم ارزشاول(b &: compress.ByteBuf، v: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
نوشتن عدد۳۲ کم ارزشاول LEPut32
روال نوشتن عدد۳۲ کم ارزشاول(b &: compress.ByteBuf، v: صحیح)نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Tar.salam
آزادسازی فهرست FreeEntries
روال آزادسازی فهرست(v &: وکتور<مدخل>)نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
ساخت ورودی پرونده زیپ MakeZipFileInput
روال ساخت ورودی پرونده زیپ(name: رشته، data_ptr: تهی*، data_len: صحیح، method: صحیح): ورودی پرونده زیپنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
ساخت زیپ ZipCreate
روال ساخت زیپ(files: وکتور<ورودی پرونده زیپ>): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
ساخت پرونده زیپ ZipCreateFile
روال ساخت پرونده زیپ(files: وکتور<ورودی پرونده زیپ>، outpath: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
فهرست زیپ ZipList
روال فهرست زیپ(p: تهی*، n: صحیح): وکتور<مدخل>نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
استخراج با نام از زیپ ZipExtractByName
روال استخراج با نام از زیپ(p: تهی*، n: صحیح، name: رشته، ok &: منطقی): compress.ByteBufok نادرست میشود.نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
استخراج همه از زیپ ZipExtractAll
روال استخراج همه از زیپ(p: تهی*، n: صحیح، destdir: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
آیا آر ای آر است IsRar
روال آیا آر ای آر است(p: تهی*، n: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
فهرست آر ای آر RarList
روال فهرست آر ای آر(p: تهی*، n: صحیح): وکتور<مدخل>نمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
استخراج با نام از آر ای آر RarExtractByName
روال استخراج با نام از آر ای آر(p: تهی*، n: صحیح، name: رشته، ok &: منطقی): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam
استخراج همه از آر ای آر RarExtractAll
روال استخراج همه از آر ای آر(p: تهی*، n: صحیح، destdir: رشته): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam