Read in file that has raw binary image data and an XML footer

3 vues (au cours des 30 derniers jours)
Justin Solomon
Justin Solomon le 14 Juin 2015
Commenté : Ken Atwell le 14 Juin 2015
Hello, I need to read in data from a file that contains a large amount of raw binary image data (singles) followed by an XML footer. I can easily read in the image data (if I know the size of the array), but I'm not sure how to then proceed and read in the rest of the file in XML format. The xmlread() function needs a standalone XML file. My thought was to copy (bit by bit) the footer of the file into a temp file that would then be read by xmlread(). But I'm not quite sure how to do that copy just a part of a file into a new file. Any help would be much appreciated.
Justin

Réponse acceptée

Ken Atwell
Ken Atwell le 14 Juin 2015
You've got the right idea.
Since you know the size of the image, open the mixed image/XML file with fopen, then use fseek to position the reader just after the image. Then use fread to read the tail of the file. Write this text to a temporary file.
  2 commentaires
Justin Solomon
Justin Solomon le 14 Juin 2015
Thanks for your response Ken. When I posted the question I hadn't realized that XML files are just human readable text files (I've never worked with XML before). I've implemented your suggestion and it seems to work well. The only thing that bugs me (from a purely "elegant code" perspective) is that I'm reading in the text, then writing it out again. Do you know of a way to tell Matlab to just carbon copy the bits from a range of read positions in File A, into a new File B?
Anyways, thanks again for your answer. I've got something that works so please don't spend any time thinking about the more "elegant" approach unless you know something off the top of your head.
Justin
Ken Atwell
Ken Atwell le 14 Juin 2015
I'm not aware of any way to create a "file" that is a subset of another without actually copying the bits. xlmread takes a filename only and not a string or file handle and alternative sources of data, which would also eliminate the need for a temporary file.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Low-Level File I/O dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by