アーカイブの変更

アーカイブの変更 – ファイルの削除や追加

導入

File_Archive バージョン 1.3 では、既存のアーカイブを編集するための関数が新たに追加されました。 これらの関数を使用すると、既存のアーカイブからファイルを削除したり アーカイブにファイルを追加したりできるようになります。

File_Archive においては ファイルシステムは単なるリーダー/ライターであり、 変更内容を "実際の" アーカイブ (実際のファイル) に書き込んだりネストしたアーカイブ (別のアーカイブの内部にあるアーカイブ) に書き込んだりすることができます。

既存のアーカイブからのファイルの削除

ファイルをアーカイブから削除するには、 File_Archive クラスの以下の関数のいずれかを使用します。

  • remove ( &$pred , $URL )

    指定した条件を満たすすべてのファイルを $URL から削除します。 URL は File_Archive::read() 関数と同じ形式のものです。 ネストしたアーカイブも使用することができます。

  • removeFromSource ( &$pred , &$source , $URL = null )

    remove と同じですが、デフォルトのファイルシステムリーダーではなく $source を使用します。URL を省略した場合は $source がアーカイブでなければなりません。 ファイルはここから削除されます。

  • removeDuplicates ( $URL )

    この関数は、$URL で指定したアーカイブから 重複しているファイルを削除します。直近のファイルのみを残します。

    ファイルの更新時刻が記録されていない場合は、 一番古いものとみなします。

    ふたつのファイルの更新時刻が同じ場合は、 アーカイブ内での位置がもっとも上にあるもの (通常は一番最後に追加したもの) を残します。

  • removeDuplicatesFromSource ( &$source , $URL = null )

    removeDuplicate() と同じですが、 デフォルトのファイルシステムリーダーではなく $source を使用します。URL を省略した場合は $source がアーカイブでなければなりません。

これらの関数は、アーカイブの圧縮解除を再帰的には行わないことに注意しましょう。

zip アーカイブからの jpg、gif そして bmp ファイルの削除

<?php
require_once "File/Archive.php";

File_Archive::remove(
    
File_Archive::predExtension(
        array(
'jpg''jpeg''bmp''gif')
    ),
    
'archive.zip'
);
?>

ネストしたアーカイブからの画像ファイルの削除

<?php
require_once 'File/Archive.php';

File_Archive::remove(
    
File_Archive::predMIME(
        array(
'image/*')
    ),
    
'archive.zip/data.tgz'
);
?>

アーカイブへのファイルの追加

ファイルをアーカイブに追加するには、 File_Archive クラスの以下の関数のいずれかを使用します。

  • appender ( $URL , $unique = null , $type = null , $stat = array() )

    URL で指定したアーカイブに追加します。

    unique が true の場合は、アーカイブ内に 同じ名前のファイルがあればそれが削除されます。 null の場合はデフォルト設定 (変更するには File_Archive::setOption('appendRemoveDuplicates', true/false)) を使用します (デフォルトは false です)。

    アーカイブが存在しない場合は、指定したパラメータ (型が指定されていない場合は URL の拡張子で判断します) と stat 配列を使用して作成します。

  • appenderFromSource ( &$source , $URL = null , $unique = null , $type = null , $stat = array() )

    appender と同じですが、デフォルトのファイルシステムリーダーではなく $source を使用します。

これらの関数はいずれも、ライターを返します。 これは、先ほどのように extract 関数で使用することができます。

アーカイブへのフォルダの追加

<?php
require_once "File/Archive.php";

File_Archive::extract(
    
File_Archive::read('folder'),
    
File_Archive::appender('archive.zip')
);
?>

ライターではなく文字列を関数で使用した場合は、 File_Archive::appender() で文字列が変換されることに注意しましょう。 したがって、先ほどの例はこのように書き直すこともできます。

アーカイブへのフォルダの追加

<?php
require_once "File/Archive.php";

File_Archive::extract(
    
$src 'folder',
    
$dest'archive.zip'
);
?>
フィルタ (Previous) 圧縮したファイルのキャッシュ (Next)
Last updated: Thu, 30 Oct 2014 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.