FindBugs сообщает об ошибке:
Опора на кодировку по умолчанию Нашел вызов метода, который будет выполнять преобразование байта в String (или String to byte) и будет предполагать, что кодировка платформы по умолчанию подходит. Это приведет к изменению поведения приложения между платформами. Используйте альтернативный API и явно укажите имя кодировки или Charset.
Я использовал FileReader как это (всего лишь фрагмент кода):
public ArrayList<String> getValuesFromFile(File file){
String line;
StringTokenizer token;
ArrayList<String> list = null;
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
list = new ArrayList<String>();
while ((line = br.readLine())!=null){
token = new StringTokenizer(line);
token.nextToken();
list.add(token.nextToken());
...
Чтобы исправить ошибку, мне нужно изменить
br = new BufferedReader(new FileReader(file));
to
br = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charset.defaultCharset()));
И когда я использую PrintWriter, произошла ошибка. Так что теперь у меня есть вопрос. Когда я могу (должен) использовать FileReader и PrintWriter, если это не хорошая практика, полагаться на кодировку по умолчанию? И второй вопрос - правильно использовать Charset.defaultCharset()? Я решил использовать этот метод для автоматического определения кодировки пользовательской ОС.