Changing the header in a file which include binary content
이전 댓글 표시
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);
채택된 답변
추가 답변 (1개)
Walter Roberson
2018년 4월 11일
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.
카테고리
도움말 센터 및 File Exchange에서 String Parsing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!