人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PEARのArchiveで質問です。
下記のソースであるディレクトリのファイルの全てをZIPに圧縮するプログラムを作ったのですが、それを解凍すると、同じファイルが2個、3個と増えて圧縮されてます(当然、対象のディレクトリ内には同一名のファイルは存在しません。)

原因などご存知のかたいらっしゃいますでしょうか?対象のディレクトリのパーティションは、0777にしてます。


※$fileNameに出力ファイル名、$dirに圧縮対象のディレクトリを指定してます。

File_Archive::extract(
File_Archive::read($fileName . '/'),
File_Archive::toArchive($dir, File_Archive::toOutput())
);

●質問者: makocan
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●50ポイント

3つのファイルがあったとして、
./example/a
./example/b
./example/c
保存先を./example/zにしてしまうと…
1. aを zに格納
2. bと z(中身はa) を zに格納
3. cと z(中身はaとb)を zに格納
zには aが3つ、bが2つ、cが1つ・・・ということでは?

この場合の対策はアーカイブ保存先ををファイルのディレクトリ下には作成しないこと。
もしくは、
ワイルドカードでファイルタイプを制限すること。

File_Archive::extract(
 File_Archive::read($dir . '/*.jpg'),
 File_Archive::read($dir . '/*.png'),
 File_Archive::read($dir . '/*.txt'),
 File_Archive::toArchive($fileName, File_Archive::toOutput())
); 

2 ● oil999
●50ポイント

$fileNameと$dirの指定位置が間違っています。
下記のようにしてみて下さい。

File_Archive::extract(
 File_Archive::read($dir),
 File_Archive::toArchive($fileName, File_Archive::toOutput())
);
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ