Java - Zapis do pliku

Odpowiedz Nowy wątek
2014-08-04 19:27
0

Próbuje napisać aplikację, w której wprowadzałoby się różne wydarzenia, one zapisywałyby się do pliku, a program je odczytywał i przypominał o nich. Niestety nie działa mi zapis do pliku za pomocą klasy **FileWriter**

Oto kod:

package Calendar;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class EventCreatePanel extends JPanel implements ActionListener{
    private static final long   serialVersionUID    = 1L;

    private JTextField          name;
    private JTextField          day, month, year;

    private JTextField          nameP, dayP, monthP, yearP;

    private JButton             ok;

    public EventCreatePanel(){
        name = new JTextField();
        name.setBounds(90, 30, 100, 40);

        day = new JTextField();
        day.setBounds(90, 100, 100, 40);

        month = new JTextField();
        month.setBounds(90, 170, 100, 40);

        year = new JTextField();
        year.setBounds(90, 240, 100, 40);

        nameP = new JTextField("Name");
        nameP.setEditable(false);
        nameP.setBounds(15, 30, 60, 40);

        dayP = new JTextField("Day");
        dayP.setEditable(false);
        dayP.setBounds(15, 100, 60, 40);

        monthP = new JTextField("Month");
        monthP.setEditable(false);
        monthP.setBounds(15, 170, 60, 40);

        yearP = new JTextField("Year");
        yearP.setEditable(false);
        yearP.setBounds(15, 240, 60, 40);

        ok = new JButton("OK");
        ok.setBounds(65, 300, 70, 40);

        ok.addActionListener(this);

        add(name);
        add(day);
        add(month);
        add(year);

        add(nameP);
        add(dayP);
        add(monthP);
        add(yearP);

        add(ok);

        setLayout(null);
    }

    @Override
    public void actionPerformed(ActionEvent e){
        if (e.getSource() == ok){
            try{
                FileWriter fw = new FileWriter("events.txt", true);

                fw.write(name.getText() + " ");
                fw.write(Integer.parseInt(day.getText()) + " ");
                fw.write(Integer.parseInt(month.getText()) + " ");
                fw.write(Integer.parseInt(year.getText()) + "\n");
                System.out.println("Zapisano");
                System.out.println(name.getText() + " ");
                System.out.println(Integer.parseInt(day.getText()) + " ");
                System.out.println(Integer.parseInt(month.getText()) + " ");
                System.out.println(Integer.parseInt(year.getText()) + " ");

                fw.close();
            } catch (NumberFormatException e1){
                System.out.println("Program nie działa.");
            } catch (IOException e1){
                System.out.println("Program nie działa.");
            }

            CalendarPanel.events.add(new Event(name.getText(), Integer.parseInt(day.getText()), Integer.parseInt(month
                    .getText()), Integer.parseInt(year.getText())));
            CalendarPanel.eve = new JScrollPane(new JList<Event>(CalendarPanel.table()));
            CalendarPanel.eve.updateUI();
            repaint();

            System.out.println("OK");

        }
    }
}

Z góry dziękuję za pomoc.

Pozostało 580 znaków

2015-01-06 13:31
0

Łap!

package main;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("file.txt");
        writeToFile("Siemka".toCharArray(), file);
    }
    static void writeToFile(char[] charArray, File f) throws IOException {
        DataOutputStream out = new DataOutputStream(new FileOutputStream(f));
        for(char c : charArray) {
            out.write(c);
        }
        out.flush();
    }
}

Pozostało 580 znaków

2015-01-06 14:37
0

@apilat, kod zapisu jest poprawny. Czemu uważasz, że nie działa? Ja bym ominął dwukrotną konwersję String => Integer => String.

fw.write(name.getText() + " "+day.getText()) + " "+month.getText()) + " "+year.getText()) + "\n");

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans, 2015-01-06 14:37

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