confirm valid file identifier before flcose?

12 visualizaciones (últimos 30 días)
CM
CM el 1 de Feb. de 2024
Respondida: CM el 2 de Feb. de 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.

Respuesta aceptada

Les Beckham
Les Beckham el 1 de Feb. de 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

Más respuestas (2)

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

CM
CM el 2 de Feb. de 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.

Categorías

Más información sobre Migrate GUIDE Apps en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by