zapis do pliku - niepełny zapis.

Odpowiedz Nowy wątek
2014-09-08 14:21
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();

Pozostało 580 znaków

2014-09-08 14:26
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

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2014-09-08 14:28

Pozostało 580 znaków

2014-09-09 09:07
_mucka
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.

Faktycznie, lepiej TEN SAM ciąg sklejać N razy, po jednym dla każdego zastosowania.... - Shalom 2014-09-09 10:57
@Shalom, ja też przy pierwszym czytaniu Twojego posta zrozumiałem, iż proponujesz, że wszystko należy skleić do jednego Stringa. I trochę się zdziwiłem. - bogdans 2014-09-09 11:14
Nie no przecież chodziło mi o sklejenie stringa raz na obieg pętli, nie o budowanie całości ;] - Shalom 2014-09-09 11:22

Pozostało 580 znaków

2014-09-09 10:47
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.

Zgoda, warto zrobić Stringa (a jeszcze lepiej obiekt BufferedString), ale z jednego wiersza, a nie z całości. - bogdans 2014-09-09 10:52
@bogdans lepiej to zrobić używając Streaming API :P - Shalom 2014-09-09 10:57
To wymaga Javy 8, ja jej na razie używam z doskoku, gdy pracuje na laptopie. Na stacjonarnym mam XP, a Java 8 go nie lubi. - bogdans 2014-09-09 11:35

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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