Я пытаюсь прочитать файл в виде UTF-8 или Windows-1252 в зависимости от вывода этого метода:
public Charset getCorrectCharsetToApply() {
// Returns a Charset for either UTF-8 or Windows-1252.
}
До сих пор у меня было:
String fileName = getFileNameToReadFromUserInput();
InputStream is = new ByteArrayInputStream(fileName.getBytes());
InputStreamReader isr = new InputStreamReader(is, getCorrectCharsetToApply());
BufferedReader buffReader = new BufferedReader(isr);
Проблема, с которой я столкнулась, заключается в преобразовании экземпляра BufferedReader
в FileReader
.
Далее
- Невозможно получить имя самого файла (
fileName
), чтобы быть конкретнымCharset
; иногда имя файла будет содержать символы UTF-8, а иногда и Windows-1252. То же самое касается содержимого файла (однако, если имя файла и содержимое файла всегда будут иметь соответствующие кодировки). - Только логика внутри
getCorrectCharsetToApply()
может выбрать кодировку для применения, поэтому попытка прочитать файл по его имени до вызова этого метода может привести к тому, что Java попытается прочитать имя файла с неправильной кодировкой. который заставляет его умереть!
Спасибо заранее!