以下のコマンドでファイルやフォルダーをZip/Unzipします。

Deeplからの自動翻訳

ファイルをやり取りする前(例えばメールなど)に、ファイルを圧縮してサイズを小さくしてから送信することがよくあります。4D v18では、外部のライブラリやツールを使わずに、プログラミングでファイルの圧縮と解凍ができます。ここでは、それを可能にする新しいコマンドを紹介します。

HDIの例

ファイルとフォルダーを圧縮する

新しい Zip Create archiveコマンドは、ファイル、フォルダ、またはパラメータ例えば、アーカイブを読むためのパスワード)を持つオブジェクトのいずれかを渡すことによって、ZIP アーカイブを作成することができます。

ファイルを圧縮する。

C_OBJECT($file;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/file.zip")
$file :=Folder(fk desktop folder).file("MyDocs/text.txt")
ZIP Create archive ($file;$destination)

フォルダーを圧縮する。

C_OBJECT($folder;$destination)
$destination :=Folder(fk desktop folder).file("MyDocs/Images.zip")
$folder :=Folder(fk desktop folder).folder("MyDocs/Images")
ZIP Create archive ($folder;$destination)

パスワードとプログレスバーで圧縮する。

C_OBJECT($zip)
$destination :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$zip :=New object
$zip .files:=Folder(fk desktop folder).folder("MyDocs/Resources").folders()
$zip .password:="password"
$zip .callback:=Formula(FormulaCompressing ($1))

progID :=Progress New
ZIP Create archive ($zip;$destination)
Progress QUIT (progID)

FormulaCompressing メソッドです。

Progress SET PROGRESS ( ; ( /100))progIDNum$1

ファイルやフォルダの圧縮を解除する

新しい ZIP Read archiveコマンドはアーカイブ・オブジェクトを返します。このオブジェクトを操作することで、アーカイブ内のファイル一覧を取得したり、特定のファイルを抽出したり、アーカイブ全体を抽出したりすることが簡単にできます。

アーカイブの内容を読み込む

C_OBJECT($archive;$path)
$path :=Folder(fk desktop folder).file("MyDocs/Archive.zip")
$archive :=ZIP Read archive($path
)

ファイル・フォルダの一覧を取得する

$folders:=$archive.root.folders()
$files :=$archive.root.files()

ファイルの内容を抽出せずに読み取る

If ( [$i]. =".txt") := [$i].() := [$i].()$filesextension
$txt$filesgetText
Else
$blob$filesgetContent
End if

アーカイブからファイルを取り出す

$folderResult:=$files[$i].copyTo(Folder(fk desktop folder).folder("MyDocs"))

すべてのファイルを取り出す

$folderResult:=$archive.root.copyTo(Folder(fk desktop folder).folder("MyDocs"))

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。