读取Zip文件中的CSV文件数据,而无需在Matlab中提取内容 [英] Read the data of CSV file inside Zip File without extracting the contents in Matlab
问题描述
我有许多Zip文件{'File1.zip', 'File2.zip', 'File3.zip',..., 'FileN.zip'}
,其中每个zip文件都包含一个Data.csv
文件.我想读取每个Zip文件的'Data.csv'
中的数据,而不必提取Zip文件的内容.这可能吗..?
I have number of Zip Files {'File1.zip', 'File2.zip', 'File3.zip',..., 'FileN.zip'}
in which each zip file contains a Data.csv
file. I want to read the data in 'Data.csv'
of each Zip file without having to extract the Zip files' contents. Is this possible..?
推荐答案
当然Winzip/7zip/Winrar没有COM接口组件,可以像Word一样直接调用,胜过其他应用程序.
Certainly Winzip / 7zip / Winrar do not have COM interface component which can invoke directly unlike word, excel an other application.
因此@Java合适
想法不是物理上提取文件,而是创建文件的绝对路径,以便Windows将其视为文件的物理存在(类似于〜tmp文件)
Idea is don't extract files physically , however create absolute path of file such that windows consider as physical presence of File (similar to ~tmp file)
此处是代码
zipFilename = 'Ex.zip';
zipJavaFile = java.io.File(zipFilename);
%创建一个Java ZipFile
% Create a Java ZipFile
zipFile = org.apache.tools.zip.ZipFile(zipJavaFile);
%从ZipFile中提取条目.
% Extract the entries from the 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将其视为目录
% Create Absolute Path so that Windows consider as Directory
file = cellfun(@(x) fullfile('.',x),file,'UniformOutput',false);
%现在可以操作文件上的任何内容.
% Now Operate Any thing on File.
这篇关于读取Zip文件中的CSV文件数据,而无需在Matlab中提取内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!