zapis do pliku - niepełny zapis.

0

Witam,

Problem polega na tym, że cała zawartość listy nie zapisuje się do pliku. Wypisuję również zawartość na konsole - co wykonuje się prawidłowo.
Wszystko co wypisuję jest Stringiem. Wiem że brakuje przechwytywania wyjątków, ale chyba w tym przypadku nie ma ono znaczenia.

 FileWriter plik2 = new FileWriter("sprawdzenie.txt");
		BufferedWriter buforPlikW = new BufferedWriter(plik2);
		for (int i = 0; i < listaINS.size(); i++){
				System.out.println(listaINS.get(i).getIns()  + listaINS.get(i).getGdzie() + listaINS.get(i).getPierwszaZnaleziona()+ " | "                               +  listaINS.get(i).getLiniaZnaleziona() );
		buforPlikW.write(listaINS.get(i).getIns() + listaINS.get(i).getGdzie() + listaINS.get(i).getPierwszaZnaleziona() + " | "+                      listaINS.get(i).getLiniaZnaleziona() );

		buforPlikW.newLine();
		}
		plik2.close();
0

Zamykasz plik a nie buffered writera... Więc jeśli w buforze do zapisania coś leżało to to olałeś.
Moje rady:

  • nie rób copy-paste jak idiota! zapisz sobie ten ciąg który budujesz do stringa a potem go wyświetl i zapisz do pliku...
  • Przynajmniej try with resources zamiast takiego otwierania i zamykanie ręcznego...
  • Użyj java 8 stream API do zbudowania ładnego strumienia stringów a potem użyj klasy Files
0
Shalom napisał(a):
  • nie rób copy-paste jak idiota! zapisz sobie ten ciąg który budujesz do stringa a potem go wyświetl i zapisz do pliku...

Ja bym powiedzial ze idiota zapisuje caly string w pamieci zeby pozniej zapisac do pliku.
Chociaz nie, nie idiota, uzylbym czegos mniej obrazliwego.

0

Z tego ci mi sie wydaje, to takie wyswietlanie / zapisywanie jest bardzo nie efektywne. Przy kazdym zlaczeniu ( + ) tworzony jest nowy obiekt z doklejana trescia. Autor wykonuje takie operacje w 2 metodach, zatem chyba lepiej zrobic w forze jednego Stringa i przekazac go do 2 metod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1