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.

 채택된 답변

Les Beckham
Les Beckham 2024년 2월 1일

0 개 추천

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

추가 답변 (2개)

Voss
Voss 2024년 2월 1일

0 개 추천

try
fclose(fid);
catch
% file already closed, do nothing
end
CM
CM 2024년 2월 2일

0 개 추천

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.

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

질문:

CM
2024년 2월 1일

답변:

CM
2024년 2월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by