我有多个Zip文件{'File1.zip', 'File2.zip', 'File3.zip',..., 'FileN.zip'}
,其中每个zip文件包含一个Data.csv
文件。我想读取每个Zip文件的'Data.csv'
中的数据,而不必提取Zip文件的内容。这可能吗??
答案 0 :(得分:2)
当然Winzip / 7zip / Winrar没有可以直接调用的COM接口组件,不像其他应用程序。
因此@Java是合适的
理念是不要在物理上提取文件,但要创建文件的绝对路径,以便windows视为文件的物理存在(类似于~tmp文件)
这里是代码
zipFilename = 'Ex.zip';
zipJavaFile = java.io.File(zipFilename);
%创建Java ZipFile
zipFile = org.apache.tools.zip.ZipFile(zipJavaFile);
%从ZipFile中提取条目。
entries = zipFile.getEntries;
cnt = 1;
%获取Zip文件路径
while entries.hasNext
tempObj = entries.nextElement;
file{cnt,1} = tempObj.getName.toCharArray';
cnt = cnt+ 1;
end
%提取文件名
ind = regexp(file,'$*.csv$');
ind = find(~cellfun(@isempty,ind)); % Find Non Empty Cell Index
file = file(ind);
%创建绝对路径,以便Windows将其视为目录
file = cellfun(@(x) fullfile('.',x),file,'UniformOutput',false);
%现在在文件上操作任何东西。