Question

Salut tout le monde, je travaille sur un utilitaire de vidage hexadécimal en Java. Je vais avoir quelques problèmes avec le scanner que je serais en utilisant avant la logique hexagonale / ascii.

En ce moment j'ai la logique et quelques autres choses exclues pour des raisons de débogage, mais si quelqu'un sait ce qui se passe, je voudrais savoir! Conseils grandement appréciés.

package filedumputility;

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

public class FileDump extends JFrame {

public FileDump() throws Exception{
    setTitle("File Dump Utility");
    add(new DumpPanel());
}

//Main method
public static void main(String[] args) throws Exception {
    FileDump frame = new FileDump();
    frame.setSize(500, 250);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.setVisible(true);
}
//Class to creaste components
class DumpPanel extends JPanel {
    private JFileChooser fileChooser = new JFileChooser();
    private JTextArea dumpArea = new JTextArea(11, 20);
    private JTextField fileName = new JTextField(16);
    private JButton newButton = new JButton("New File");
    private JButton clearButton = new JButton("Clear");
    private JButton dumpButton = new JButton("Dump File");
    private JScrollPane scrollPane = new JScrollPane(dumpArea);
    private JPanel p = new JPanel();
    private Scanner input;

    //Class to add components and read the file
    public DumpPanel() throws Exception {
        p.setLayout(new FlowLayout());
        setLayout(new BorderLayout());

        add(p, BorderLayout.NORTH);
        p.add(fileName);
        p.add(dumpButton);
        p.add(newButton);
        p.add(clearButton);
        add(scrollPane, BorderLayout.SOUTH);

        dumpArea.setEditable(false);
        fileName.setEditable(false);

        //Create event for the new file button
        newButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){                    

                if(fileChooser.showOpenDialog(null)
                        == JFileChooser.APPROVE_OPTION) {

                    //Get the file
                    java.io.File file = fileChooser.getSelectedFile();

                //Set file name bar to the selected file
                fileName.setText(file.getName());
                }
            }
        });

        dumpButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if(fileChooser.showOpenDialog(null)
                        == JFileChooser.APPROVE_OPTION) {

                    //Get the file
                    java.io.File file = fileChooser.getSelectedFile();
                    //Create scanner
                    Scanner input = new Scanner(file);

                }
            }
        });

        clearButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                dumpArea.setText(" ");
                fileName.setText(" ");
            }
        });
    }
}
}
Était-ce utile?

La solution

Votre seul problème que je vois est que le constructeur du scanner lance FileNotFoundException ; Par conséquent, vous devez l'enfermer dans un bloc try / catch.

Il devrait ressembler à ceci (juste pour commencer):

dumpButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        if(fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {

            //Get the file
            java.io.File file = fileChooser.getSelectedFile();
            //Create scanner
            try {
                Scanner input = new Scanner(file);
            } catch (FileNotFoundException ex) {
                System.err.println("Error opening " + file.getName());
            }
        }
    }
});

Vous trouverez peut-être aussi exceptions Java Tutorial utile.

Autres conseils

Pour obtenir votre exemple pour compiler, vous pouvez envelopper la ligne de new Scanner dans une prise d'essai comme ceci:

            Scanner input = null;
            try {
                input = new Scanner(file);
            } catch(FileNotFoundException ex) {
                // handle this condition appropriately
            }

Une fois que vous faites cela, vous pouvez procéder au traitement des lignes du fichier de la façon dont vous l'intention.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top