Pobieranie pliku z URL - przechowywanie starszej wersji?

Pobieranie pliku z URL - przechowywanie starszej wersji?
ShookTea
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 629
0

Ostatnie przypadki zdają mi się sugerować, że Windows/Java mają jakąś wbudowaną pamięć cache.

Program pobiera zawartość pewnego pliku za pomocą metody:

Kopiuj
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ć?

jarekczek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Siemianowice Śląskie
  • Postów: 500
0

A plik jest gdzie? Na dysku sieciowym, lokalnym?

ShookTea
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 629
0

Na serwerze GitHuba.

rubaszny_karp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0
ShookTea napisał(a):

Na serwerze GitHuba.

w takim razie skąd pewność że github tego nie cachuje, github to pewnie w 99% eventually consistency, także nie spodziewałbym się natychmiastowych updatów.
Dlatego też piszesz program ? co zwraca github (wireshark, tcpdump) ?

ShookTea
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 629
0
rubaszny_karp napisał(a):
ShookTea napisał(a):

Na serwerze GitHuba.

w takim razie skąd pewność że github tego nie cachuje, github to pewnie w 99% eventually consistency, także nie spodziewałbym się natychmiastowych updatów.
Dlatego też piszesz program ? co zwraca github (wireshark, tcpdump) ?

Mam pewność, że tego nie cachuje, ponieważ otwierając plik z tego samego linka, z którego próbuję pobrać, w przeglądarce, otrzymuję wersję najnowszą.
Wireshark znajduje pakiety pobrane z GitHuba, zaszyfrowane TLS-em.

rubaszny_karp
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
1

Polacz sie tam plain socketem I juz bedziesz widzial wszystkie bajty

Ew polecam netty - szybciej latwiej ladniej
Ew wklej na Gita appke to zobaczymy

P.s dodaj se debuga do ssl a przez java option I Ci wypluje tez pakiety z tego co pamietam

jarekczek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Siemianowice Śląskie
  • Postów: 500
1

Fiddler pozwala deszyfrować własny ruch https. Github powinien się na to nabrać. To coś w rodzaju Wiresharka, ale tylko do http/s.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.