在Zip文件中读取CSV文件的数据,而不在Matlab中提取内容

问题描述 投票:2回答:1

我有一些Zip文件{'File1.zip', 'File2.zip', 'File3.zip',..., 'FileN.zip'},其中每个zip文件包含一个Data.csv文件。我想读取每个Zip文件的'Data.csv'中的数据,而不必提取Zip文件的内容。这可能吗..?

matlab zip unzip
1个回答
2
投票

当然Winzip / 7zip / Winrar没有可以直接调用的COM接口组件,不像其他应用程序。

因此@Java是合适的

想法是不要物理提取文件,但是创建文件的绝对路径,使windows视为File的物理存在(类似于~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);

%现在操作File上的任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.