Java - Zapis do pliku

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.

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();
	}
}
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");

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