confirm valid file identifier before flcose?

I am using GUI callbacks to close a file. Sometimes the file is aready closed, and I get an invalid file identifier error. Is there a robust way to check if the file is still open before calling fclose? I have tried using fopen('all') but that does not always catch it.

 Akzeptierte Antwort

Les Beckham
Les Beckham am 1 Feb. 2024

0 Stimmen

If you call fopen on the file identifier when the file is closed it will return empty (instead of returning the filename). So, you can do this:
if ~isempty(fopen(fid))
fclose(fid);
end

Weitere Antworten (2)

Voss
Voss am 1 Feb. 2024

0 Stimmen

try
fclose(fid);
catch
% file already closed, do nothing
end
CM
CM am 2 Feb. 2024

0 Stimmen

Thanks Les and Voss. I have actually combined both techniques, with the try inside the if loop. I am not using multithreading, so I am not sure if it is possible for the fid to become invalid within the space of the fopen and the if statements, but I have been going round in circles on this for a while and want to make sure it is robust.

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

CM
am 1 Feb. 2024

Beantwortet:

CM
am 2 Feb. 2024

Community Treasure Hunt

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

Start Hunting!

Translated by