www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/AppendToOrOverwriteExistingFilesExample.m

    %% Append To or Overwrite Existing Text Files
% This example shows how to append values to an existing text file,
% rewrite the entire file, and overwrite only a
% portion of the file.
%%
% By default, |fopen| opens files with read access. To change the type of
% file access, use the permission specifier in the call to |fopen|. Possible
% permission specifiers include:
% 
% * |'r'| for reading
% * |'w'| for writing, discarding any existing contents of the file
% * |'a'| for appending to the end of an existing file
% 
% To open a file for both reading and writing or appending, attach a plus
% sign to the permission, such as |'w+'| or |'a+'|. 
% If you open a
% file for both reading and writing, you must call |fseek| or |frewind| between
% read and write operations.
%% Append to Existing Text File
% Create a file named |changing.txt|.
fileID = fopen('changing.txt','w');
fmt = '%5d %5d %5d %5d\n';
fprintf(fileID,fmt, magic(4));
fclose(fileID);
%%
% The current contents of |changing.txt| are:
%
%  16     5     9     4
%   2    11     7    14
%   3    10     6    15
%  13     8    12     1
%%
% Open the file with permission to append.
fileID = fopen('changing.txt','a');
%%
% Write the values |[55 55 55 55]| at the end of file:
fprintf(fileID,fmt,[55 55 55 55]);
%%
% Close the file.
fclose(fileID);
%%
% View the contents of the file using the |type| function.
type changing.txt
%% Overwrite Entire Text File
% A text file consists of a contiguous set of characters, including
% newline characters. To replace a line of the file with a different number
% of characters, you must rewrite the line that you want to change and all
% subsequent lines in the file.
%%
% Replace the first line of |changing.txt| 
% with longer, descriptive text. Because the change applies to the first
% line, rewrite the entire file.
replaceLine = 1;
numLines = 5;
newText = 'This file originally contained a magic square';

fileID = fopen('changing.txt','r');
mydata = cell(1, numLines);
for k = 1:numLines
   mydata{k} = fgetl(fileID);
end
fclose(fileID);

mydata{replaceLine} = newText;

fileID = fopen('changing.txt','w');
fprintf(fileID,'%s\n',mydata{:});
fclose(fileID);
%%
% View the contents of the file.
type changing.txt
%% Overwrite Portion of Text File
% Replace the third line of changing.txt with |[33 33 33 33]|. If you want to
% replace a portion of a text file with exactly the same number of
% characters, you do not need to rewrite any other lines in the file.
replaceLine = 3;
myformat = '%5d %5d %5d %5d\n';
newData = [33 33 33 33];
%%
% Move the file position marker to the correct line.
fileID = fopen('changing.txt','r+');
for k=1:(replaceLine-1);
   fgetl(fileID);
end
%%
% Call |fseek| between read and write operations.
fseek(fileID,0,'cof');

fprintf(fileID, myformat, newData);
fclose(fileID);
%%
% View the contents of the file.
type changing.txt