读取Zip文件中的CSV文件数据,而无需在Matlab中提取内容 [英] Read the data of CSV file inside Zip File without extracting the contents in Matlab

查看:128
本文介绍了读取Zip文件中的CSV文件数据,而无需在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆