Jump to content
noorders

[AJUDA] Ler ficheiro CSV

Recommended Posts

noorders

Boa noite!

Estou a tentar ler um ficheiro excell CSV com esta formatação:

Numero;Ano

1111111;1

2222222;2

3333333;3

O problema é que o programa dá-me este erro:

9/Jun/2011 21:08:32 lapr2_lerficheiros.InterfaceGrafica$1 actionPerformed

SEVERE: null

java.io.FileNotFoundException: LEI_ALUNOS_2009_2010.csv (O sistema não conseguiu localizar o ficheiro especificado)

at java.io.FileInputStream.open(Native Method)

at java.io.FileInputStream.<init>(FileInputStream.java:106)

at java.util.Scanner.<init>(Scanner.java:636)

at lapr2_lerficheiros.LeituraAlunos.lerFicheiro(LeituraAlunos.java:36)

at lapr2_lerficheiros.InterfaceGrafica$1.actionPerformed(InterfaceGrafica.java:52)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:231

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)

at javax.swing.AbstractButton.doClick(AbstractButton.java:357)

at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1223)

at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1264)

at java.awt.Component.processMouseEvent(Component.java:6267)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6032)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4630)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:423

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:416

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:247

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Código onde chamo esse método:

JMenuItem jmiLerFicheiro = new JMenuItem("Ler", 'L');
        jmiLerFicheiro.setAccelerator(KeyStroke.getKeyStroke("ctrl L"));
        jmiLerFicheiro.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                try {
                    LeituraAlunos la = new LeituraAlunos();
                    MeuLinkedList m = la.lerFicheiro();//linha 52
                    la.gravarFicheiro(m, "Alunos");
                } catch (FileNotFoundException ex) {
                    Logger.getLogger(InterfaceGrafica.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });

Código do método que lê ficheiros CSV

    @Override
    public MeuLinkedList lerFicheiro() throws FileNotFoundException {
        String[] dados;

        JFileChooser jfcLerFicheiro = new JFileChooser();
        jfcLerFicheiro.setDialogTitle("Escolha um ficheiro CSV de alunos a carregar");
        int returnVal = jfcLerFicheiro.showOpenDialog(jfcLerFicheiro);
        if (returnVal == JFileChooser.APPROVE_OPTION) {

            Scanner in = new Scanner(new File(jfcLerFicheiro.getSelectedFile().getName()));//linha 36
            dados = in.nextLine().split(";");

            try {
                if (dados[0].equalsIgnoreCase("Numero")) {
                    alunosCSV = new MeuLinkedList();

                    while (in.hasNextLine()) {
                        dados = in.nextLine().split(";");
                        alunosCSV.add(new Aluno(Integer.parseInt(dados[0]), Integer.parseInt(dados[1])));
                    }
                    in.close();
                }
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage() + "\nTem de seleccionar um ficheiro com o nome LEI_ALUNOS");
            }
        }
        return alunosCSV;
    }

Obrigado!

Cumprimentos

Share this post


Link to post
Share on other sites
KTachyon

1. Confirma a tua working directory

2. Confirma as permissões do ficheiro


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
brunoais

1. Confirma a tua working directory

2. Confirma as permissões do ficheiro

3. Para a próxima lê a mensagem de erro ou, se a leste e interpretaste, demonstra que a leste e interpretaste.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.