MATLAB: как вставить строку текста в начале файла?
У меня есть файл, полный данных ascii. Как добавить строку в первую строку файла? Я не могу найти такую функциональность с помощью fopen (кажется, она добавляется только в конце и ничего больше.)
3 ответов
Вариант 1:
Я бы предложил вызов некоторых системных команд из MATLAB. Одна из возможностей Windows-записать новую строку текста в свой собственный файл, а затем использовать DOS на команда to объединить два файла. Вот как будет выглядеть вызов в MATLAB:
!for %f in ("file1.txt", "file2.txt") do type "%f" >> "new.txt"
я использовал !
(bang) оператор для вызова команды из MATLAB. Команда выше последовательно выводится содержимое " file1.txt " и " file2.txt "в Файл" Новый.формат txt." Имейте в виду, что вам, вероятно, придется закончить первый файл новым символом строки, чтобы правильно добавить вещи.
Другой альтернативой приведенной выше команде будет:
!for %f in ("file2.txt") do type "%f" >> "file1.txt"
который добавляет содержимое " file2.txt " to " file1.txt", в результате чего " file1.txt", содержащий объединенный текст вместо создания нового файла.
если у вас есть свой имена файлов в строках, вы можете создать команду в виде строки и использовать система вместо !
оператора. Например:
a = 'file1.txt';
b = 'file2.txt';
system(['for %f in ("' b '") do type "%f" >> "' a '"']);
Вариант 2:
одно только решение MATLAB, в дополнение к AMRO в, is:
dlmwrite('file.txt',['first line' 13 10 fileread('file.txt')],'delimiter','');
использует FILEREAD чтобы прочитать содержимое текстового файла в строку, объедините новую строку ,которую вы хотите добавить (вместе с ASCII-коды для перевозки возврат и подача строки / новая строка), затем перезаписывает исходный файл с помощью DLMWRITE.
Я чувствую, что опция #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-й строкой. Поскольку в моем случае я был тем, кто писал файл, я поместил фиктивные данные в начале файла, а затем в конце, пусть это будет перезаписано после операций, указанных выше.
кстати, даже я столкнувшись с одной проблемой с этим решением, что, в зависимости от длины(/размера) фиктивных данных и фактических данных, программа либо оставляет часть фиктивных данных на одной строке, либо приносит мои новые данные во 2-ю строку.. Любой совет в этом отношении высоко ценится.