Zapisywanie i otwieranie

Zapisywanie i otwieranie
RO
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 13 lat
  • Postów:5
0

W Javie programuje od paru dni, na razie wszystko szło jak z płatka, ale podczas pisania prostego edytora tekstu natknąłem się na problem. Kompilator wszystko ładnie kompiluje, ale program nie chce otwierać lub zapisywać danych do pliku, na dodatek zamykanie działa =l męcze się z tym już od dwóch dni. Proszę o to kod AcionListenera, rzućcie na niego okiem.

Kopiuj
public void actionPerformed(ActionEvent e) {
String command=e.getActionCommand();
if(command.equals("Zamknij")){
System.exit(0);
}    
/******************************************************************/
else if(command.equals("Zapisz")){
String nazwa=text.getText();
String tekst=area.getText();
try{
BufferedWriter bw=new BufferedWriter(new FileWriter(nazwa));
bw.write(tekst,0,tekst.length());
bw.flush();
bw.close();
}
catch(Exception ek){}
}
/******************************************************************/
else if (command.equals("Otwórz")){
String nazwa=text.getText();
String linia;
try{
BufferedReader br=new BufferedReader(new FileReader(nazwa));
while((linia=br.readLine())!=null){
area.append(linia+"\n");
}
br.close();
}
catch(Exception ek){}
}
/******************************************************************/
else if(command.equals("Nowy")){
area.setText("1.2.3.4.5.");
}
}//zamyka actionListenera
}//zamyka program 
edytowany 1x, ostatnio: roertbb
mordimer
  • Rejestracja:około 14 lat
  • Ostatnio:około 12 lat
  • Postów:52
0

Co do twojego "Zapisz" to może spróbuj tak:

Kopiuj
else if(command.equals("Zapisz")){
String nazwa = text.getText();
try{
BufferedWriter bw = new BufferedWriter(new FileWriter(nazwa));
bw.write(area.getText());
bw.close();
}

spróbuj na początek nazwę pliku wpisac na sztywno: np.: "test.txt"

Zaś co do otwórz to może to pomoże :

Kopiuj
else if (command.equals("Otwórz")){
String nazwa=text.getText();
String linia;
try{
BufferedReader br = new BufferedReader(new FileReader(new File(ścieżka/do/pliku/nazwa.rozszerzenie)));
area.read(br);
}
br.close();
}

Nie wiem czy używasz JTextPane czy JTextArea, ja używam JTextPane i to co napisałem mi działa, ale nie wiem czy w JTextArea to samo zadziała.


Mordek

edytowany 2x, ostatnio: mordimer
RO
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 13 lat
  • Postów:5
0

Używam JTextArea, ale zobacze na tym co ty mówiłeś, raczej dalej powinienem sobie poradzić skoro tobie działa, jakby co to będę w kontakcie =)

RO
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 13 lat
  • Postów:5
0

No dobra problemów ciąg dalszy. Mam taki kod na otwieranie pliku:

Kopiuj
 if (command.equals("Odczytaj")){
String nazwa=pole.getText();
String linia;
try {
BufferedReader br=new BufferedReader(new FileReader(nazwa));
while((linia=br.readLine())!=null) {
area.append(linia+'\n');
br.close();
}
}catch(Exception ek){}
}

Tylko problem w tym, że program wyświetla tylko jeden (pierwszy) wiersz tekstu, a inne chociaż są w tym pliku, nawet po wielokrotnym użyciu przycisku nie wyświetlają się.
Zapisywanie już zrobiłem, korzystając z kodu swojego jak i @up'a =)

EDIT: mam działa, poprawny kod

Kopiuj
  if (command.equals("Odczytaj")){
String nazwa=pole.getText();
String linia;
try {
BufferedReader br=new BufferedReader(new FileReader(nazwa));
while((linia=br.readLine())!=null) {
area.append(linia+'\n');
}br.close();
}catch(Exception ek){}
}
edytowany 1x, ostatnio: roertbb

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.