Eksplorator plików, mutowalna ścieżka

Eksplorator plików, mutowalna ścieżka
SR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 17
0

W zasadzie to jest cały problem. Robie eksplorator plików i potrzebuje jakiegoś tymczasowego objektu File, który zawiera "teraźniejszą" (nie mam dużego zasobu słow) ścieżkę. Czyli jak jestem np w C:\folder, a potem przejde do C:\folder\foo to ten objekt musi sie zmienić. Niestety jak podaje oracle docs:

Instances of the File class are immutable

Ma ktoś może jakieś rozwiązanie?
PS
Z przejściem "w góre" nie jest jeszcze tak żle, bo istnieje funkcja .getParentFile()

nie100sowny
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 402
1

Zawsze możesz mieć zmienną typu immutable i jej przypisywać inną wartość. Jaki problem? Dlaczego musisz koniecznie zmieniać ten File?

Zrób sobie:

Kopiuj
File currentDirectory = new File(...)

currentDirectory = goToParent()
currentDirectory = goToChild("foo")
TI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 66
0

Zamiast zmieniać obiekt pamiętany w zmiennej, przypisz do tej zmiennej inny obiekt.
Przykład podglądowy dla Stringa, który również jest immutable:

Kopiuj
String s;
s = "C:/foo";
s = s + "/bar";
Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
2

@stasiek_raczejava: nie używaj File. Do obsługi ścieżek służy klasa Path.

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.