MATLAB: Save the result of urlread as file in current directory instead of a variable in the workspace

MATLABunzipurlread

I would like to find an answer to unzip the result of the urlread funtion that's a zip archive. The result experienced is the fallowing:
if true
>> urlread('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.zip?2d1147c9cf376b26c445ffee4d2b37d1');
>> unzip(ans)
??? Error using ==> checkfilename>validateFilename at 184
Function UNZIP was unable to find file 'PK'.
Error in ==> checkfilename at 50 [fullfilename, fid] = validateFilename( …
Error in ==> parseUnArchiveInputs at 87 [archiveFilename, url] = checkfilename(archiveFilename, validExtensions, …
Error in ==> unzip at 52 [zipFilename, outputDir, url, urlFilename] = parseUnArchiveInputs( …
>> unzip('exch.zip') Warning: Permission denied to overwrite file ".\eurofxref-hist.csv". > In iofun\private\extractArchive>extractArchiveEntry at 108 In iofun\private\extractArchive at 52 In unzip at 92 >> unzip('exch.zip') >> end
Also I didn't find how to overwrite the unziped file if this is needed. If I need to download a zip file with urlread() how I can save it in current directory instead of a variable in the workspace. Many thanks for reading this post and answers.

Best Answer

You can save the file using urlwrite instead of urlread:
file = fullfile(cd, 'TheZipFile.zip');
urlwrite(['http://www.ecb.europa.eu/stats/eurofxref/eurofxref-', ...
'hist.zip?2d1147c9cf376b26c445ffee4d2b37d1'], ...
file);
unzip(file);
urlread replies the contents of the read file as a variable, but unzip expects a file name.