confirm valid file identifier before flcose?

11 visualizzazioni (ultimi 30 giorni)
CM
CM il 1 Feb 2024
Risposto: CM il 2 Feb 2024
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.

Risposta accettata

Les Beckham
Les Beckham il 1 Feb 2024
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

Più risposte (2)

Voss
Voss il 1 Feb 2024
try
fclose(fid);
catch
% file already closed, do nothing
end

CM
CM il 2 Feb 2024
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.

Categorie

Scopri di più su Software Development Tools in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by