How to display an error if a file doesn't exist

25 visualizzazioni (ultimi 30 giorni)
I am working on a function that uses ftp to pull files from nasa's website. I want to make it so that if the file doesn't exist then display an error message. The following is the code of what is retrieved.
ftpobj = ftp('cddis.nasa.gov');
for i=1:days2get
dirStr = sprintf('/gnss/data/daily/2020/brdc/', doy(i));
fileStr = sprintf('BRDC00IGS_R_2020%03d0000_01D_MN.rnx.gz', doy(i));
cd(ftpobj, dirStr);
mget(ftpobj, fileStr, '.');
end
gunzip('*.gz');
Right now if the file doesn't exist I get an error saying that the file is not found on the server.

Risposta accettata

dpb
dpb il 1 Lug 2020
ftpobj = ftp('cddis.nasa.gov');
dirStr = sprintf('/gnss/data/daily/2020/brdc/';
cd(ftpobj, dirStr);
for i=1:days2get
fileStr = sprintf('BRDC00IGS_R_2020%03d0000_01D_MN.rnx.gz', doy(i));
d=dir(ftpobj,fileStr);
if isempty(d)
f = errordlg(['File: ' fileStr ' not found','File Error');
continue
end
mget(ftpobj, fileStr, '.');
end
gunzip('*.gz');
The dirStr has a what appears superfluous doy(i) after it -- didn't look like the site had additional structure; the files as listed were at the above directory.
Above will popup a dialog; you can do whatever instead -- the trick is to see if the dir() call is/is not empty. If the file exists, it'll be an ordinary-looking MATLAB dir() output struct.
Above worked when tried here...
  1 Commento
dpb
dpb il 1 Lug 2020
Everybody else was busy, too, I see! :)
I was going to modify above as the easiest solution is try...catch block.
But I see IA used it above.

Accedi per commentare.

Più risposte (2)

Image Analyst
Image Analyst il 1 Lug 2020
Try this:
doy = [30, 200];
days2get = length(doy);
ftpObject = ftp('cddis.nasa.gov');
for k = 1 : days2get
folder = sprintf('/gnss/data/daily/2020/brdc/', doy(k));
baseFileName = sprintf('BRDC00IGS_R_2020%03d0000_01D_MN.rnx.gz', doy(k));
cd(ftpObject, folder);
try
mget(ftpObject, baseFileName, '.');
fprintf('\nSUCCESS! FTP Successfully retrieved filename #%d of %d:\n %s\nfrom folder:\n %s\n', ...
k, days2get, baseFileName, folder);
catch
errorMessage = sprintf('ERROR! FTP Error retrieving filename #%d of %d:\n %s\nfrom folder:\n %s', ...
k, days2get, baseFileName, folder);
fprintf('\n%s\n', errorMessage);
uiwait(errordlg(errorMessage));
end
end
gunzip('*.gz');
You'll see:
SUCCESS! FTP Successfully retrieved filename #1 of 2:
BRDC00IGS_R_20200300000_01D_MN.rnx.gz
from folder:
/gnss/data/daily/2020/brdc/
ERROR! FTP Error retrieving filename #2 of 2:
BRDC00IGS_R_20202000000_01D_MN.rnx.gz
from folder:
/gnss/data/daily/2020/brdc/
and the user will get an error popup dialog box whenever there is an error retrieving a file.

Hussein Ammar
Hussein Ammar il 1 Lug 2020
if ~exist('myFileName.EXTENSION','file')
disp('Requested file was not found.')
end

Categorie

Scopri di più su File Operations in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by