以下代码有效:
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;
}
但是,有人告诉我可以用一种更复杂的方式来做到这一点:使用spring boot注入资源,如下所示:
@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(这是错误的)。我的错误在哪里?或者如何以更复杂的方式重写工作代码?