【问题标题】:Abort reading a txt file while it is being updated - Matlab在更新时中止读取 txt 文件 - Matlab
【发布时间】:2012-03-19 10:57:37
【问题描述】:

我有 2 个 Matlab 实例正在运行。第一个是向.txt 文件写入数据,另一个是读取该数据。

有没有办法验证 .txt 文件正在被访问并相应地引发异常/错误?

我发现第二个 Matlab 实例无论如何都会读取数据,但在更新 .txt 文件时也会产生错误,例如 Horzcat 等。

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);

【问题讨论】:

标签: matlab file-io concurrency locking text-files


【解决方案1】:

在写入实例上,在打开文件进行写入之前创建一个名为“busyWriting.bla”的文件,完成写入后删除该文件。并在阅读实例中将所有内容与子句if(~exist('busyWriting.bla','file')) ... end

【讨论】:

  • 我喜欢你的解决方案。非常简单并且可以完成工作。谢谢。
猜你喜欢
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多