Вы все равно можете использовать литерал класса, даже для типа массива.
Class clazz = String[].class;
Class clazz2 = byte[].class;
В разделе 15.8.2 состояния JLS указано:
Литерал класса - это выражение, состоящее из имени класса, интерфейса, массива или примитивного типа или псевдотипа
blockquote>void
, за которым следует символ. и токенclass
.(смелый акцент мой)
Да, необходимо указать кодирование файла, который Вы хотите считать.
Да, это означает, что необходимо знать кодирование файла, который Вы хотите считать.
Нет, нет никакого общего способа предположить кодирование любого данного файла "простого текста".
Конструкторы FileReader
всегда используйте кодировку по умолчанию платформы, которая обычно является плохой идеей.
Вместо FileReader необходимо использовать new InputStreamReader(
new FileInputStream(pathToFile)
, <encoding>)
.
FileReader
кодировка по умолчанию платформы Java использования, которая зависит от параметров настройки системы компьютера, на котором она работает и обычно является самым популярным кодированием среди пользователей в той локали.
Если это "лучшее предположение" не корректно затем, необходимо указать кодирование явно. К сожалению, FileReader
не позволяет это (основной контроль в API). Вместо этого необходимо использовать new InputStreamReader(new FileInputStream(filePath), encoding)
и идеально получите кодирование от метаданных о файле.