Archive::Zip Adding files with out directory info

A

Aqua

Hello Group,

I would like to add files without directory path

D:\Dir1\subdir\aaa\ccc\1s.txt
D:\Dir1\subdir\aaa\ccc\a34.abc
D:\Dir1\subdir\aaa\ccc\f4.aaa
D:\Dir1\subdir\aaa\ccc\h6.txt
D:\Dir1\subdir\ddd\ccc\14.hi
D:\Dir1\subdir\ddd\ccc\1g6.txt
D:\Dir1\subdir\eee\ccc\24.pp
D:\Dir1\subdir\fff\ccc\3v6.txt

Final zip should contain only files (1s.txt, a34.abc, f4.aaa, h6.txt,
14.hi, 1g6.txt, 24.pp, 3v6.txt).

Archive::Zip
find sub { push @FileArray, $File::Find::name if (!-d) }, "$dir";

foreach loop
use addFile( $FileName)
addFile is not working if I pass a file with full path.

Actually I am looking for a function similar to
"extractMemberWithoutPaths" but it should add files.

Appreciate any help in this regard

Thanks
Dominic
 
R

Richard Morse

Hello Group,

I would like to add files without directory path

D:\Dir1\subdir\aaa\ccc\1s.txt
D:\Dir1\subdir\aaa\ccc\a34.abc
D:\Dir1\subdir\aaa\ccc\f4.aaa
D:\Dir1\subdir\aaa\ccc\h6.txt
D:\Dir1\subdir\ddd\ccc\14.hi
D:\Dir1\subdir\ddd\ccc\1g6.txt
D:\Dir1\subdir\eee\ccc\24.pp
D:\Dir1\subdir\fff\ccc\3v6.txt

Final zip should contain only files (1s.txt, a34.abc, f4.aaa, h6.txt,
14.hi, 1g6.txt, 24.pp, 3v6.txt).

My version of Archive::Zip allows a second parameter to the addFile
command. This is the "internal name" of the file, which you can specify
without the path.

Thus,

#!perl
use strict;
use warnings;

use File::Basename;
use Archive::Zip qw/:ERROR_CODES/;

my $zip = Archive::Zip->new();

my $zip_file = 'D:/Dir1/subdir/aaa/ccc.zip';
my @files = (
'D:/Dir1/subdir/aaa/ccc/1s.txt',
'D:/Dir1/subdir/aaa/ccc/a23.abc',
'D:/Dir1/subdir/aaa/ccc/f4.aaa',
'D:/Dir1/subdir/aaa/ccc/h6.txt',
);

foreach my $file (@files) {
$zip->addFile($file, basename($file));
}

my $status = $zip->writeToFileNamed($zip_file);
if ($status != AZ_OK) {
die("error when saving zip file '$zip_file'");
}

__END__

Please note, I did not test this, and typed it in. It is based on code
that I do have working, but I may have made typos. This is intended for
demonstration purposes only.

HTH,
Ricky
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,562
Members
45,038
Latest member
OrderProperKetocapsules

Latest Threads

Top