我有多个 Zip 文件 {'File1.zip', 'File2.zip', 'File3.zip',..., 'FileN.zip'}
其中每个 zip 文件都包含一个 Data.csv
文件。我想读取'Data.csv'
中的数据无需解压缩 Zip 文件的内容即可提取每个 Zip 文件的内容。这可能吗..?
最佳答案
当然Winzip/7zip/Winrar 没有像word 那样可以直接调用的COM 接口(interface)组件,excel 其他应用程序。
因此@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);
% 现在对文件进行任何操作。
关于matlab - 在不提取Matlab中的内容的情况下读取Zip文件中的CSV文件的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131163/