如何在matlab中更新txt文件

时间:2013-01-16 11:18:06

标签: matlab

我想更新包含属性 - 值对的txt文件中的一行,其中属性位于方括号之间,其值在下面的行中。这是一个示例文件:除此之外,我想忽略以'#'开头的注释行。另一方面,如果我想在评论专栏中添加评论,该怎么办?

#===========================
#===========================
[system]
# comment 
programming 
#===========================
[information] 
#
application

在这个例子中,“系统”是一个属性,并且“编程”它的值。同样,'信息'是另一种属性,'应用'是它的价值。

我想用属性 - 值对调用我的函数并更新txt文件中的相应值。到现在为止,我有以下内容:

fh = fopen(filename,'r');
 fh= fopen(filename,'w');
 while ~feof 
 line = fgetl(fh);
 if(line(1) == '[') && (line(end) == ']') 
value = lower(line(2:end-1)); 

然后我会将'value'与我的输入进行比较,以检查它是否与属性匹配。如果是这样,我应该使用新输入更新下一行。最后,我必须写入原始文件。

对于此示例txt,如何将“编程”一词更新为“系统信息”?

1 个答案:

答案 0 :(得分:1)

怎么样

function [] = updateFile( fileName, propName, newProbVal )
%
% update file fileName, replacing the value of propName with newPropVal
%
% all inputs are strings
%
rfh = fopen( fileName, 'r' ); % read handle
tname = tempname(); % temporary file name
wfh = fopen( tname, 'w' );

% read line by line
foundFlag = false;
line = fgetl( rfh );
while ischar(line)
    if foundFlag
        fprintf( wfh, '%s\r\n', newProbVal );
        foundFlag = false;
    else
        fprintf( wfh, '%s\r\n', line );
    end
    tks = regexp( line, ['^\[',propName,'\]'] );
    foundFlag = ~isempty(tks);
    line = fgetl( rfh );    
end
fclose( rfh );
fclose( wfh );
movefile( tname, fileName, 'f' ); % rename temp file name