Использовать Reader.read () . Возвращаемое значение -1 означает конец потока; иначе, приведите к char .
Этот код считывает символьные данные из списка аргументов файла:
public class CharacterHandler {
//Java 7 source level
public static void main(String[] args) throws IOException {
// replace this with a known encoding if possible
Charset encoding = Charset.defaultCharset();
for (String filename : args) {
File file = new File(filename);
handleFile(file, encoding);
}
}
private static void handleFile(File file, Charset encoding)
throws IOException {
try (InputStream in = new FileInputStream(file);
Reader reader = new InputStreamReader(in, encoding);
// buffer for efficiency
Reader buffer = new BufferedReader(reader)) {
handleCharacters(buffer);
}
}
private static void handleCharacters(Reader reader)
throws IOException {
int r;
while ((r = reader.read()) != -1) {
char ch = (char) r;
System.out.println("Do something with " + ch);
}
}
}
Плохая вещь в приведенном выше коде заключается в том, что он использует системный набор символов по умолчанию. Везде, где возможно, предпочитайте известную кодировку (в идеале, кодировку Unicode, если у вас есть выбор). См. Charset класс для получения дополнительной информации. (Если вы чувствуете мазохизм, вы можете прочитать это руководство по кодированию символов .)
(Одна вещь, которую вы, возможно, захотите обратить внимание, - это дополнительные символы Юникода - те, для хранения которых требуется два значения символов. Для получения дополнительной информации см. Класс Символ ; это крайний случай, который вероятно, не относится к домашней работе.)