کتابخانه‌ی استاندارد · کدگذاری و داده

بایگانی archive

ساختن و بازکردن بایگانی‌های زیپ و تار، خواندن RAR و فشرده‌سازی پرونده با جی‌زیپ.

واردسازی بایگانی
در این صفحه
  1. گونه‌ها
  2. روال‌ها

بایگانی چند پرونده را در یک پرونده جمع می‌کند. زیپ هر پرونده را جدا فشرده می‌کند؛ تار فقط پرونده‌ها را پشت‌سرهم می‌گذارد و معمولاً بعد با جی‌زیپ فشرده می‌شود (.tar.gz).

روال‌ها هم در حافظه کار می‌کنند و هم با پرونده. داده‌ی بایگانی را با نشانی و طول می‌گیرند، مثل ب.data و ب.len از یک بافر بایت.

گونه‌ها

ورودی پرونده تار TarFileInput

ساختار ورودی پرونده تار
یک پرونده برای ساختن تار.
نامانگلیسیگونهتوضیح
namenameرشته = ""نام درون بایگانی.
data_ptrdata_ptrتهی*نشانی محتوا.
data_lendata_lenصحیح = 0طول محتوا.
is_diris_dirمنطقی = نادرستورودی پوشه است.
archive-Tar.salam
واردسازی بایگانی
واردسازی فشرده سازی

روال ریشه:
    ب := فشرده سازی.بافر از رشته("خط اول\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، ۲)
پایان
خروجی0 notes 0 true notes/a.txt 24 false true خط اول خط دوم true true true true true true true true 513 70000

مدخل Entry

ساختار مدخل
یک مدخل بایگانی.
نامانگلیسیگونهتوضیح
namenameرشته = ""نام و مسیر درون بایگانی.
sizesizeصحیح۶۴اندازه‌ی اصلی بر حسب بایت.
compressed_sizecompressed_sizeصحیح۶۴اندازه‌ی فشرده.
is_diris_dirمنطقی = نادرستمدخل پوشه است.
methodmethodصحیح = 0روش فشرده‌سازی: صفر ذخیره‌ی ساده، ۸ DEFLATE.
crc32crc32طبیعی۳۲چک‌جمع محتوا.
mtimemtimeصحیح۶۴زمان تغییر بر حسب ثانیه از مبدأ یونیکس.
archive-Zip.salam
واردسازی بایگانی
واردسازی فشرده سازی

روال ریشه:
    متن := "سلام بایگانی، سلام بایگانی، سلام بایگانی"
    ب := فشرده سازی.بافر از رشته(متن)
    ناپایا پرونده‌ها := وکتور {} برگردان وکتور<بایگانی.ورودی پرونده زیپ>
    پرونده‌ها.بیفزا(بایگانی.ساخت ورودی پرونده زیپ("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")
پایان
خروجیdocs/ 0 false true 0 docs/a.txt 75 true false 8 b.txt 5 false false 0 true true false true true true true false 0 false true

ورودی پرونده زیپ ZipFileInput

ساختار ورودی پرونده زیپ
یک پرونده برای ساختن زیپ.
نامانگلیسیگونهتوضیح
namenameرشته = ""نام درون بایگانی؛ نام پوشه با / تمام می‌شود.
data_ptrdata_ptrتهی*نشانی محتوا.
data_lendata_lenصحیح = 0طول محتوا.
methodmethodصحیح = 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
بایگانی تار (قالب ustar) را در حافظه می‌سازد؛ تار فشرده نمی‌کند، برای آن جی‌زیپ را روی نتیجه به کار ببرید.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: 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.ByteBuf
محتوای یک مدخل را بیرون می‌آورد؛ اگر نام پیدا نشود، ok نادرست می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam

استخراج همه از زیپ ZipExtractAll

روال استخراج همه از زیپ(p: تهی*، n: صحیح، destdir: رشته): منطقی
همه‌ی مدخل‌ها را در پوشه‌ی مقصد می‌نویسد. اگر داده زیپ نباشد، مدخلی ندارد و چیزی نوشته نمی‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam

آیا آر ای آر است IsRar

روال آیا آر ای آر است(p: تهی*، n: صحیح): منطقی
اگر داده با امضای RAR شروع شود، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam

فهرست آر ای آر RarList

روال فهرست آر ای آر(p: تهی*، n: صحیح): وکتور<مدخل>
مدخل‌های یک بایگانی RAR.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam

استخراج با نام از آر ای آر RarExtractByName

روال استخراج با نام از آر ای آر(p: تهی*، n: صحیح، name: رشته، ok &: منطقی): compress.ByteBuf
محتوای یک مدخل RAR ذخیره‌شده بدون فشرده‌سازی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam

استخراج همه از آر ای آر RarExtractAll

روال استخراج همه از آر ای آر(p: تهی*، n: صحیح، destdir: رشته): منطقی
همه‌ی مدخل‌های RAR را بیرون می‌آورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: archive-Zip.salam