Прервать чтение текстового файла во время его обновления — Matlab

У меня работает 2 экземпляра Matlab. В то время как первый записывает данные в файл .txt, другой читает эти данные.

Есть ли способ проверить, что к файлу .txt обращаются, и, соответственно, выдать исключение/ошибку?

Я обнаружил, что второй экземпляр Matlab все равно считывает данные, но генерирует ошибку, такую ​​​​как Horzcat и т. Д., В то время как этот файл .txt также обновлялся.

fName = 'Test.txt' ;

% Matlab Instance1
mat = 1 + (2-1)*randn(100000,5)   ;      mat = mat.' ;

[fid, fMsg] = fopen(fName, 'at') ;
if fid~=-1,  fprintf(fid, '%.10f\t%.10f\t%.10f\t%.10f\t%.10f\r\n', mat(:)) ; end
fclose(fid);

    % Matlab Instance2
    fid = fopen(fName);
    C = textscan(fid, '%f %f %f %f %f', 'Delimiter', '\t');
    C=cell2mat(C);
    fclose(fid);

person Maddy    schedule 29.02.2012    source источник
comment
Прочтите этот раздел "> stackoverflow.com/questions/3451343/   -  person Cheery    schedule 01.03.2012


Ответы (1)


В экземпляре записи создайте файл с именем «busyWriting.bla», прежде чем открывать файл для записи, удалите этот файл после того, как закончите запись. И на экземпляре чтения заключить все с пунктом if(~exist('busyWriting.bla','file')) ... end

person zamazalotta    schedule 29.02.2012
comment
Мне нравится ваше решение. Очень просто и делает свою работу. Спасибо. - person Maddy; 02.03.2012