How do I specify the compression level to gzip?
4 次查看(过去 30 天)
显示 更早的评论
Is there a way I can specify the zip compression to "best compression" or "normal compression".
0 个评论
回答(3 个)
Jan
2011-7-19
This is the core method:
function zipLevel(ZIPFile, FileList, Level)
import java.io.*
import java.util.zip.*
import com.mathworks.mlwidgets.io.InterruptibleStreamCopier.*
if nargin < 3, Level = 6; end
% Create output stream and set the level of compression:
try
fileOut = FileOutputStream(ZIPFile);
catch
error(['*** ', mfilename, ': Cannot open for output: ', ...
char(10), ' ', ZIPFile]);
end
zipOut = ZipOutputStream(fileOut);
zipOut.setLevel(Level);
% This InterruptibleStreamCopier is unsupported and
% may change without notice.
StreamCopier = getInterruptibleStreamCopier;
% Append files to zip file:
FileList = cellstr(FileList);
for iFile = 1:numel(FileList)
aFile = FileList{iFile};
fileIn = FileInputStream(aFile);
zipObj = ZipEntry(aFile);
zipOut.putNextEntry(zipObj);
StreamCopier.copyStream(fileIn, zipOut);
fileIn.close;
zipOut.closeEntry;
end
zipOut.close;
fileOut.close;
This should be expanded by checking the the existence of file, getting the contents of folders and using a root folder for relative file names. Comments and file times can also be included by this method.
1 个评论
raym
2018-4-19
Hi, I run your code and found that the filelist not compressed into the ZIPFile. instead, when I double click the zip file, it directly opens the D drive, and all the hard drive was indexed from here. But the file size is only 140kb.
the cyclist
2011-7-19
I don't know how to do this, but if you type
>> edit zip
you will get a bit more into the innards of the creation of the Java ZipEntry object, so maybe that will help.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Instrument Control Toolbox Supported Hardware 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!