Avatar billede bertelsenbo Nybegynder
20. april 2006 - 13:21 Der er 9 kommentarer og
1 løsning

Skriv til fil - IO - throws IOException fejl

Se bort fra GUI. Men eftersom jeg ikke sortere det fra, er det med. Den laver en fejl, og jeg fatter bønne. Jeg vil skrive til en fil fra mit input-tekst felt. Hjælp mig. Jeg er en spasser til det, så forklar det store træk, tak.


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class Gem
{
    private JFrame frame;
    private JTextField txtField;
    public Gem()
    {
        frame = new JFrame("Gem til fil eksempel");
        makeFrame();
    }

//    private static void makeFrame(String[] args) throws IOException
    private void makeFrame()
    {
        // Hele vinduet
        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new BorderLayout());
       
       
        JLabel minLabel = new JLabel("Skriv noget:");
        txtField = new JTextField();

        JPanel buttonPanel = new JPanel(); // født med flowlayout
        JButton saveButton = new JButton("Save");
        saveButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
              makeFile();
            }
        });
        JButton exitButton = new JButton("Exit");       
        exitButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }
        });
        buttonPanel.add(saveButton); 
        buttonPanel.add(exitButton);
       
       
        // Arranger delene
        contentPane.add(minLabel, BorderLayout.NORTH);
        contentPane.add(txtField, BorderLayout.CENTER);
        contentPane.add(buttonPanel, BorderLayout.SOUTH);
       
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
     
    }
   
    private void makeFile() throws IOException
    {
        File outputFile = new File("outOfHere.txt");
        FileWriter out = new FileWriter(outputFile);
        String txt = txtField.getText();
        if (!txt.equals("")){
            out.write(txt);
        }
        out.close();
    }
}
Avatar billede thomaswinterberg Nybegynder
20. april 2006 - 14:02 #1
try
{
  BufferedWriter out = new BufferedWriter(new FileWriter("outOfHere.txt"));
  out.write(txt);
  out.close();
}
catch (IOException e)
{

}
Avatar billede thomaswinterberg Nybegynder
20. april 2006 - 14:11 #2
Bliver der kastet en exceptiton og i så fald kan du ikke smide exceptionen så vi kan se den
Avatar billede bertelsenbo Nybegynder
20. april 2006 - 19:06 #3
"unreported exception java.oi.OIException; must be caught or declared to be thrown"
Siger den. Bruger BlueJ.
Avatar billede nielle Nybegynder
20. april 2006 - 22:36 #4
Du skal rette dette:

        saveButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                makeFile();
            }
        });

- til dette:

        saveButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                try {
                    makeFile();
                } catch (IOException ex) {
                }
            }
        });

Grund: Da du har erklæret at din funktion kan kaste en exception:

private void makeFile() throws IOException
{
...
}

- kræver Java at denne *skal* try-catches. Ellers vil Java ikke en gang kompilere den.
Avatar billede arne_v Ekspert
20. april 2006 - 23:08 #5
indtil det virker vil jeg foreslaa

                } catch (IOException ex) {
                      JOptionPane.showDialog(this, e.getMessage());
                }

ellers er troubleshooting lidt besvaerligt ...
Avatar billede nielle Nybegynder
21. april 2006 - 06:36 #6
God pointe. :^)

I det hele taget skal der jo helst være noget fornuftig kode i catch-delen; Hvad der er "fornuftigt" i det konkrete tilfælde afhænger imidlertid af hvad du vil have dit program til at gøre.
Avatar billede bertelsenbo Nybegynder
21. april 2006 - 12:22 #7
Den siger cannot find symbol når jeg indsætter den streng arne.
Men ellers virker det nu. Tak.
50 til nielle og 10 til arne. Svar for point.
Avatar billede arne_v Ekspert
21. april 2006 - 13:11 #8
giv alle point til nielle

jeg gav bare et generelt godt råd
Avatar billede nielle Nybegynder
21. april 2006 - 14:54 #9
Svar :^)
Avatar billede nielle Nybegynder
23. april 2006 - 07:29 #10
Takker for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester