Zapis JTextArea do pliku

0

Witam
Chce zapisać dane z pola tekstowego ale gdy odczytuje plik w notatniku to dane sa zapisane bez znaku nowego wiersza to znaczy

w polu mam dane
1
2
3

to w pliku zapisane 123
Jak zrobić aby było poprawnie?
Oto metoda

 private void SaveFile(){
		try {
			FileWriter g = new FileWriter(place);
			PrintWriter out = new PrintWriter(g,true);
                        out.println(text.getText());
			out.close();
		} catch (IOException e) {}
				
	}
private JTextArea text;
private String place; // sciezka z nazwa do pliku


dziękuje za pomoc i pozdrawiam
0

Są dwa sposoby:

  1. nie używaj notatnika, który jest niepoprawny,
  2. podziel tekst na linie i zapisuj każdą linie osobno dodając na końcu "\r\n".
0

jak podzielić tekst na linie z JTextArea ?

0

Hej.
To jest moja recepta na zapisywanie linia po linii.

     /**
     * Metoda do zapisania tekstu linia po linii
     * raport_txt - to jest JTextArea
     */
    public void exportTxt() {
        JFileChooser zapiszOkno = new JFileChooser();
        FileNameExtensionFilter zapiszFiltr = new FileNameExtensionFilter("Pliki tekstowe *.txt", "txt");
        zapiszOkno.setFileFilter(zapiszFiltr);
        int wynik_zapisz = zapiszOkno.showSaveDialog(raport);
        File zapiszFile = zapiszOkno.getSelectedFile();
//      Sprawdzenie czy właczone jest zawijanie wierszy bo jeśli tak to trzeba to wyłączyć
        boolean stanZawijania = raport_txt.getLineWrap();
        raport_txt.setLineWrap(false);//brak zawjania  
        String tekst = raport_txt.getText();
//      przechwytywanie wyjątku i zapis danych
        String adresZapisz1 = String.valueOf(zapiszFile).replace(".txt", "");
        if (wynik_zapisz != 0) {
            JOptionPane.showMessageDialog(null, "Nie podano / wskazano nazwy pliku.\nPrzerwano działanie funkcji Export...", "Export do 'Notatnik' format *.txt", 2);

        } else {
            int ile_wierszy = raport_txt.getLineCount();// odczyt ilości wierszy
//      zapis danych do pliku
            try {
                BufferedWriter zapisDane = new BufferedWriter(new FileWriter(adresZapisz1 + ".txt"));
                for (int i = 0; i < ile_wierszy; i++) {
                    int dd2 = raport_txt.getLineStartOffset(i);
                    int dd3 = raport_txt.getLineEndOffset(i);
                    String odczytanaLinia = tekst.substring(dd2, dd3);
                    zapisDane.write(odczytanaLinia);
                    zapisDane.newLine();
                }
                zapisDane.flush();
                zapisDane.close();//zamknięcie strumieni

            } catch (Exception e) {
                raport_txt.setLineWrap(stanZawijania);//brak zawjania
                System.err.println("Unable to create output file.");
                System.err.println(e.getMessage());
                JOptionPane.showMessageDialog(null, "Błąd utworzenia pliku *.odt !!!" + "\nBłąd: " + e.getMessage(), "UWAGA !!!", 2);
            }
            raport_txt.setLineWrap(stanZawijania);//brak zawjania
            JOptionPane.showMessageDialog(null, "Operacja Exportu wyników\nzakończona powodzeniem.", "Export do 'Notatnik' format *.txt", 1);
        }//koniec else
    }//koniec metody

Mam nadzieję że się przyda.
Pozdrawiam

0

Najprościej tak:

String[] lines = text.getText().split("\n");
0

Dziękuje Wam bardzo za odpowiedzi:) Mam kolejne pytania:)

  1. czy da się zmienić rozmiar czcionki / styl w JTextArea dla wybranego textu ?
  2. jak zmazać całą zawartość pliku? Czy jest inna metoda niż usunięcie go i stworzenie od nowa ?

Pozdrawia i raz jeszcze dziękuję za pomoc:)

0
  1. Nie, użyj JEditorPane lub JTextPane (http://docs.oracle.com/javase/tutorial/uiswing/components/text.html).
  2. Zapisz do pliku "pusty" String.

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