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

조회 수: 25 (최근 30일)
Nathan Jalal
Nathan Jalal 2020년 7월 1일
댓글: dpb 2020년 7월 1일
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.

채택된 답변

dpb
dpb 2020년 7월 1일
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
dpb
dpb 2020년 7월 1일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Image Analyst
Image Analyst 2020년 7월 1일
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 2020년 7월 1일
if ~exist('myFileName.EXTENSION','file')
disp('Requested file was not found.')
end

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by