MATLAB Answers

Leah
0

Why do I receive the error "Inavlid file identifier" when using fopen?

Asked by Leah
on 9 Jul 2012
function spec = abc(filelist);
  filelist='filelist23.txt';
  fl = importdata(filelist);
    nFile = size(fl,1);
    %fid = fopen(file);
    Nbins = 1024;
    spec = zeros(nFile, Nbins);
    for iFile = 1:nFile
      fid=fopen(fl{iFile})
      % Read the 18 header text lines (but not the entire line, and discard)
      for i=1:18 hdr=textscan(fid,'%s %*[^\n]',1); end
      x=textscan(fid,'%d%d','delimiter',',,');
      x = x{:,1};
      x = reshape(x,2,Nbins);
      spec(iFile,:) = x(2,:);
      fclose(fid);
    end
  end

I get an error at fopen--I get the number -1 which is inccorect and i have no idea how to fix it. The error message is:

??? Error using ==> textscan
Invalid file identifier.  Use fopen to generate a valid file identifier.
Error in ==> rdUCS30MCA at 23
    for i=1:18 hdr=textscan(fid,'%s %*[^\n]',1);

  2 Comments

Not nice, Leah. You found out that you cannot delete a thread after somebody has answered. Then you decided to overwrite the text by nonsense. This is a misuse of the idea of a public forum.

I restored the original question based on Lucas' assertion that this question might help others.

Sign in to comment.

2 Answers

Answer by Jan
on 10 Jul 2012

Every fopen() should be accompanied by a check of the results:

fid = fopen(fl{iFile});
if fid == -1
  error('Author:Function:OpenFile', 'Cannot open file: %s', fl{iFile});
end

File access is prone to problems. A stable program catchs them and the time wasted by debugging can be reduced, if an exhaustive error message is displayed.

  0 Comments

Sign in to comment.


Answer by Image Analyst
on 9 Jul 2012

My guess would be that perhaps you didn't specify the folder in the list, and the files don't exist on the search path.

  0 Comments

Sign in to comment.