"Best choice" depends on what you rate high.
You can add to/fromBinaryFile methods to your class, for which you'll have to define a byte array memory layout. This should be fastest.
You can add to/fromText methods to your class, for which you'll have to define textual representations. This will be tolerant against changes in the internal representation, but conversion to and from text requires extra effort. It'll also (usually) require a little more disk space.
You can define an XML layout and use some XML library for reading and writing XML documents. This is the most complex, but you'll be free from all worries about textual representation, and data will be ready for interoparibility with any other program capable of reading/writing XML and there are nice things like XSLT. In a sense, this will also be tolerant against extensions of your class.