Ostatnie przypadki zdają mi się sugerować, że Windows/Java mają jakąś wbudowaną pamięć cache.
Program pobiera zawartość pewnego pliku za pomocą metody:
private String loadFile(URL url) throws IOException {
InputStream is = url.openStream();
Scanner sc = new Scanner(is);
StringBuilder file = new StringBuilder();
while (sc.hasNextLine()) {
file.append(sc.nextLine()).append("\n");
}
sc.close();
is.close();
return file.toString();
}
Jednak gdy treść pliku pod danym URLem się zmieni, przez parę minut program zachowuje się, jakby treść była ta sama, co wcześniej. Na początku myślałem, że źle zaprogramowałem metodę przeładowującą treść ponownie, bo przecież gdybym źle zrobił metodę pobierającą treść po raz pierwszy w chwili uruchomienia programu, to nie powinno mi się nic wyświetlać. Jednak zarówno metoda przeładowująca treść, jak i ta wczytująca zawartość po raz pierwszy, korzystają z wyżej podanego loadFile
.
Poszukałem trochę w Googlu na temat jakieś pamięci Javy do zawartości plików z internetu, ale jedyne, co znalazłem, to pytania "jak to zrobić", a nie "jak się tego pozbyć".
Ma ktoś jakiś pomysł, skąd to się bierze i jak sobie z tym poradzić?