I am confused by your question. Maybe I can clear some things up for you.
The client request datas are stored in multiple files.
1. Persistence requires Serialization. Serialization converts an object to a byte stream using writeObject() and readObject() and stores the bytes in a file. This is efficient, in comparison to storing an object with your own algorithm. That would be ridiculous.
To make it efficient I thought of storing the infrequently requested java object in file by
2. I think I understand your dilemma. For example, you have a properties file that stores user names and passwords, and you also have a file that stores a less requested object, say an object that represents a pool of conference rooms. The properties file is accessed many times to check logging information, and you don't need to store object states. It's fine to store the data is characters because the schema is simple. The conference room pool has many rooms which have states. Like I said storing them with your own algorithm is ridiculous, hence why Java provides you with Serialization.
Obviously, it would the quickest way to get some data.
3. As far as caching is concerned, it only matters in the context of data accessing. If your reading large amounts of data from a file, whether its many times or even once, its best to use a BufferedInputStream. Chunks of data will be read from the file instead of character by character. I'd rather access the hard drive and read a 1KB chunk once, than read a 16 bit character 8192 times.
I hope this helps.