Вот встала проблема. Русский текст из файла property считывался кракозябрами.Google выдал следующие:
Русские буквы в файлах properties
Для чтения файлов properties используются методы загрузки ресурсов, которые работают специфичным образом. Собственно для чтения используется метод Properties.load, который не использует file.encoding (там в исходниках жёстко указана кодировка ISO-8859-1), поэтому единственный способ указать русские буквы — использовать формат \uXXXX и утилиту native2ascii.
Метод Properties.save работает по разному в версиях JDK 1.1 и 1.2. В версиях 1.1 он просто отбрасывал старший байт, поэтому правильно работал только с англицкими буквами. В 1.2 делается обратное преобразование в \uXXXX, так что он работает зеркально к методу load.
Если файлы properties у вас загружаются не как ресурсы, а как обычные файлы конфигурации, и вас не устраивает такое поведение — выход один, написать собственный загрузчик.
Русские буквы и не только
Не сильно отчаявшись, появилось решение. Используем inputStreamReader:
final Properties settings = new Properties();
FileInputStream in = null;
InputStreamReader inR = null;
try {
in = new FileInputStream("config/welcome.properties");
inR = new InputStreamReader(in, "UTF-8");
} catch (UnsupportedEncodingException ex) {
...
} catch (FileNotFoundException ex) {
...
}
try {
settings.load(inR);
} catch (IOException ex) {
...
}

Еще удобный момент пока не потерял:
ОтветитьУдалитьfinal File conff = new File(filePath);
String str = "";
try (FileInputStream fis = new FileInputStream(conff); Scanner s = new Scanner(new InputStreamReader(fis, "UTF-8"))) {
while (s.hasNextLine()) {
final String line = s.nextLine().trim();
str += line;
}
} catch (IOException ex) {
System.err.println(ex);
throw new RuntimeException(ex);
}