MATLAB:如何在文件开头插入一行文本?

MATLAB:如何在文件开头插入一行文本?,matlab,file-io,text-files,Matlab,File Io,Text Files,我有一个满是ascii数据的文件。如何将字符串附加到文件的第一行?使用fopen我找不到这种功能(它似乎只在末尾追加,没有其他功能。)选项1: 我建议。Windows上的一种可能性是将新行文本写入其自己的文件,然后使用to。以下是MATLAB中的调用: !for %f in ("file1.txt", "file2.txt") do type "%f" >> "new.txt" 我使用从MATLAB中调用命令。上面的命令按顺序将“file1.txt”和“file2.txt”的内容传

我有一个满是ascii数据的文件。如何将字符串附加到文件的第一行?使用fopen我找不到这种功能(它似乎只在末尾追加,没有其他功能。)

选项1: 我建议。Windows上的一种可能性是将新行文本写入其自己的文件,然后使用to。以下是MATLAB中的调用:

!for %f in ("file1.txt", "file2.txt") do type "%f" >> "new.txt"
我使用从MATLAB中调用命令。上面的命令按顺序将“file1.txt”和“file2.txt”的内容传输到文件“new.txt”。请记住,您可能必须以新行字符结束第一个文件,才能正确追加内容

上述命令的另一种替代方法是:

!for %f in ("file2.txt") do type "%f" >> "file1.txt"
它将“file2.txt”的内容附加到“file1.txt”中,结果是“file1.txt”包含连接的文本,而不是创建新文件

如果文件名为字符串,则可以将命令创建为字符串,并使用该命令而不是
操作员。例如:

a = 'file1.txt';
b = 'file2.txt';
system(['for %f in ("' b '") do type "%f" >> "' a '"']);
备选案文2: 除此之外,一个仅适用于MATLAB的解决方案是:

这用于将文本文件内容读入字符串,连接要添加的新行(以及回车符和换行符/新行),然后使用覆盖原始文件


我感觉选项#1可能比这个纯MATLAB解决方案在处理大型文本文件时执行得更快,但我不确定这一点。。)

以下是纯MATLAB解决方案:

% write first line
dlmwrite('output.txt', 'string 1st line', 'delimiter', '')
% append rest of file
dlmwrite('output.txt', fileread('input.txt'), '-append', 'delimiter', '')
% overwrite on original file
movefile('output.txt', 'input.txt')

使用
frewind(fid)
函数将指针指向文件的开头如何

我有一个类似的要求,尝试了
frewind()
,然后是必要的
fprintf()
语句

但是,警告:它将覆盖第1行。因为在我的例子中,我是编写文件的人,所以我在文件的开头放了一个伪数据,然后在结尾放了一个伪数据,让它在上面指定的操作之后被覆盖

顺便说一句,即使我在这个解决方案中也面临一个问题,即根据虚拟数据和实际数据的长度(/大小),程序要么将部分虚拟数据保留在同一行上,要么将我的新数据带到第二行。。
非常感谢您提供这方面的任何提示。

您在什么操作系统上运行MATLAB?不幸的是,Windows 32x。如果这是Linux,那就完全没有问题了。有没有办法在dos命令中使用MATLAB变量作为文件名?@temp2290:我在回答中添加了一个关于这个的讨论。+1:这符合我对选项2的想法,但我对如何做略有不同。我会贴出来比较。
% write first line
dlmwrite('output.txt', 'string 1st line', 'delimiter', '')
% append rest of file
dlmwrite('output.txt', fileread('input.txt'), '-append', 'delimiter', '')
% overwrite on original file
movefile('output.txt', 'input.txt')