Changing the header in a file which include binary content
Mostrar comentarios más antiguos
My ply file contains an ascii header and the rest of the mesh data content is written as binary. I would like to change lines 10, 11, 12 in the header with my specific content. I do not want to touch to the binary data which contains the mesh data. When I use the script below, my mesh data becomes like a flat surface instead of a 3D surface curvature. Why am I changing the rest of the content? How can I change the three header lines, without damaging the rest of the file?
A = regexp( fileread(ply), '\n', 'split');
A{10} = sprintf('%s',"header line 1");
A{11} = sprintf('%s',"header line 2");
A{12} = sprintf('%s',"header line 3");
fid = fopen(ply, 'wb');
fprintf(fid, A{:});
fclose(fid);
Respuesta aceptada
Más respuestas (1)
Walter Roberson
el 11 de Abr. de 2018
When you split, the newlines are removed, and you are not putting them back.
fprintf(fid, '%s\n', A{1:end-1});
fprintf(fid, '%s', A{end}); %do not add extra \n at the end
but splitting the binary content is kinda dicey.
I would recommend that you instead switch to reading a limited number of lines using fgetl(), and write out the revised versions as required, and then fread() to end of file and fwrite() it to the new file.
1 comentario
Beril Sirmacek
el 11 de Abr. de 2018
Categorías
Más información sobre String Parsing en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!