Depends on the format of the file your are reading.
If the file is a stream of ASCII bytes, then do this:
InputStream is = new FileInputStream( filePath );
Reader reader = new InputStreamReader( is, "ISO-8859-1" );
char ch = reader.read();
You always first open the input stream on the byte oriented file. Then, the InputStreamReader will convert the bytes to characters. Of course, in this case, the ISO-8859-1 is a mapping from single byte values to the exact same character values. Clearly other mapping are possible, but ISO-8859-1 happens to be the same as the first 255 characters of the Unicode set, and the first 127 of those happen to be the same as ASCII.
When writing use:
OutputStream os = new FileOutputStream( filePath ) ;
Writer w = new OutputStreamWriter( os, "ISO-8859-1" );
w.write( ch );
Once again, is the the OutputStreamWriter that converts between characters and byte stream appropriately according to the ISO-8859-1 character set. The resulting file will have one byte per character.
Here are a few more examples of proper basic stream patterns.
If using the above you execute this:
w.write("AAAA");
w.flush();
w.close();
The resulting file will contain 4 bytes with the value 65 in each byte. Reading that file back in using the code at the top will result in four "A" characters in memory, but in memory they take up 16 bits for each char.
If the file is encoded in a different character set, including possibly multiple byte characters, then simply use the right encoding in the InputStreamReader/OutputStreamWriter and the proper conversion will take place while reading and writing.
UTF-8 is not a character set, but rather an encoding of the regular unicode characters into byte sequences, and it turns out that UTF-8 encoding is quite clever in that the first 127 characters of the unicode characters are mapped into the first 127 byte values (as single bytes by themselves). Then characters >= 128 make use of 2 or more byte values in a row, where each of those byte values is >= 128. If you know that the ascii file only uses "7-bit" ASCII, then UTF-8 will work for you as well. For Java in general UTF-8 is the best encoding to use for a file because it can encode all possible Java char values properly without loss.
Learning this about streams in very important. I recommend you do not try to convert bytes to characters in any other way. It is possible, of course, but it is a waste of effort since the conversions in the streams are very reliable and correct.
(It gets worse ... actually a Character is a 32 bit quantity, of which 20 bits can be encoded into sequences of the 16-bit char values with an encoding called UTF-16. Recommend you ignore that for now, but just be aware that even in a Java String which is composed of 16-bit char values there are some double-char sequences.)