Работает следующий код:
private List<String> readFile() {
List<String> result = new ArrayList<>();
ClassLoader classLoader = getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("passwords.txt");
BufferedReader reader = null;
InputStreamReader streamReader = null;
try {
streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
reader = new BufferedReader(streamReader);
String line;
while((line = reader.readLine()) != null) {
line.trim();
result.add(line);
}
}
catch (IOException e) {
e.printStackTrace();
}
return result;
}
Однако мне сказали, что я могу сделать это более изощренным способом: добавить ресурс с помощью весенней загрузки следующим образом:
@Value("classpath:passwords.txt")
private Resource passwordFile;
А затем использовать Java 7 метод Files.readAllLines(Path, Chatset)
.Однако, когда я переписал свой код следующим образом:
@PostConstruct
private List<String> readFile() {
try {
result = Files.readAllLines(passwordFile.toFile.getPath, StandardCharsets.UTF_8)
}
....
}
Кажется, что моя переменная result
имеет размер 0 (что неверно).Где моя ошибка?Или как мне переписать мой рабочий код более изощренным способом?