Finally, I think a lot of your frustration can be cleared up by 2 simple guidelines:
1. You shouldn't ever really need to call aString.getBytes() or aByteSource.getBytes(). 2. If you need bytes-->string or string-->bytes behavior (reading from files or the database and vice versa), you can do that simply: a. bytes --> string: aByteSource.toBase64(); b. string --> bytes: Base64.decode(base64EncodedString); Those two things should probably get you all you need. Anything else will probably just cause confusion. HTH, Les