我有一个简单的方法,可以逐行读取文本文件并将其作为List<Strings>
返回。问题是,如果我在运行时更改文件并尝试再次调用该方法,它将仍然读取未更改的文件。
这是我的代码:
public List<String> generateStrings() throws Exception {
InputStream stream = getClass().getResourceAsStream(FILE);
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
LinkedList<String> stringList = new LinkedList<>();
String line = reader.readLine();
while (line != null){
stringList.add(line);
line = reader.readLine();
}
log.debug("List generated");
return stringList;
}
是否有一种方法可以在每次调用该方法时重新加载该文件?
编辑:getClass().getClassLoader().getResource(FILE).openStream()
和
URL res = getClass().getClassLoader().getResource(FILE);
if (res != null) {
URLConnection resConn = res.openConnection();
resConn.setUseCaches(false);
InputStream in = resConn.getInputStream();
}
抛出NullPointerException
编辑2:
取消了NullPointerException
(我必须更改资源文件的路径),但仍然无法在运行时重新加载文件
编辑3: 当我尝试在Spring之外修复它时,似乎可以重新实例化整个类,但该类已注入到构造函数中的服务类中,因此我不知道如何在Spring中实现这种行为。
答案 0 :(得分:1)
原因是getSourceAsStream
在内部缓存。
您可以在此处找到更多信息: https://stackoverflow.com/a/3126572/1554844