Zapisywanie do pliku - ścieżka

Zapisywanie do pliku - ścieżka
0

Mam trochę banalny problem, ale nie mam już pomysłu, jak go ogarnąć, bo wszystko niby robię okay.

Otóż, chcę zapisać ArrayList do pliku.

Robiłem to tak i działało normalnie:

Kopiuj
			ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( "plik"));
			out.writeObject(listArray);
			out.close();

Chciałem jednak wszystkie pliki mieć w jednym folderze i nie umiem tego zrobić. Takie coś zwraca błąd:

Kopiuj
			ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( "/data/plik"));
			out.writeObject(listArray);
			out.close();

Mimo, że takie wskazywanie ścieżki normalnie mi działa, przy wczytywaniu FXMLa.

Z góry dzięki za pomoc.

PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0

Nie próbowałem u siebie, ale pierwsza myśl to taka że może w złym katalogu on zaczyna (bo to co podajesz to ścieżka względna a nie bezwzględna). Spróbuj podać bezwzględną ścieżkę do pliku, który chcesz stworzyć / do którego chcesz zapisać.

Druga sprawa, to odczyt / zapis do / z plików w javie można zrobić na tysiąc sposobów i jak jeden zawodzi to można próbować kolejnym :P

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Czy katalog data istnieje? Jeśli nie, to musisz go wpierw utworzyć.
Wbrew temu co pisze @Pinek, podałeś ścieżkę bezwzględną a nie względną, spróbuj (jeśli katalog data istnieje)

Kopiuj
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream( "data/plik"));

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 2x, ostatnio: bogdans
samouczek
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 7 lat
  • Postów:67
0

Do głowy przychodzi mi kilka rzeczy:

  • system operacyjny, zakładam, że pracujesz na macu/*nixie - ścieżki "/x/y" "pasują" do tych systemów, jeśli to windows powinieneś użyć innych ścieżek "C:\x\y",
  • czy katalog "/data" istnieje?
  • czy masz uprawnienia do zapisu w tym katalogu?

Zauważ, że podałeś ścieżkę bezwzględną, weź to pod uwagę sprawdzając uprawnienia i to czy katalog istnieje. Poza tym błąd, który dostajesz byłby pomocny ;)

Zobacz pozostałe 2 komentarze
bogdans
Istnieje rozbieżność między dokumentacją a rzeczywistym zachowywaniem się programów.
samouczek
Pełna zgoda. Nie uważasz jednak, że lepiej jest połączyć ze sobą katalogi używając File.separatorChar, niż bazować na czymś co akurat teraz działa i nie jest udokumentowane?
bogdans
Bezpieczniejsze jest użycie stałych z klasy File, ale Ty tego nie proponowałeś.
samouczek
Tak, masz rację, nie proponowałem, ale w tych komentarzach nie dyskutujem o propozycji a o "uzyciu czegoś co nie jest udokumentowane" i "u Ciebie działa" vs użycie udokumentowanego API. Co nawiasem mówiąc nie ma nic wspólnego z pierwotym problemem.
bogdans
Dlatego dyskutujemy w komentarzach ;)

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.