Cássio Bruzasco
Cássio Bruzasco

Reputation: 183

Opening a file without the extension - Java

Im doing a project for my college, my save/opening file are working all right, but I need them to save as my desired extension, and open like that as well. For example: When I click on Save File, I write the name testFile as file name and hit save, now the my code must save as my desired extension. Same works for opening file, if I write testFile and hit open, it must locate the testFile.txt. Anyone can give me a hand how I should do this? follow my code below.

private class SalvaDesenho implements ActionListener {
    private Component parent;
    SalvaDesenho(Component parent) {
        this.parent = parent;
    }
    public void actionPerformed(ActionEvent e) {
        try {


        final JFileChooser fc = new JFileChooser();
        fc.setFileFilter(new FileNameExtensionFilter("Arquivo de Texto (.txt)", "txt"));  
        fc.setAcceptAllFileFilterUsed(false);
        int returnVal = fc.showSaveDialog(parent);


        if (returnVal != JFileChooser.APPROVE_OPTION)
            return;
        int op = 0;
        if (fc.getSelectedFile().exists()) {
            Object[] options = { "Sim", "Não" };
            op = JOptionPane.showOptionDialog(null, "O arquivo já existe deseja substituilo?", "Warning",
                    JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
                        null, options, options[1]);
        }
        if (op != 0) return;

        System.out.println("Salvando: " + fc.getSelectedFile().getPath());

        FileOutputStream fout = new FileOutputStream(fc.getSelectedFile());
        ObjectOutputStream oos = new ObjectOutputStream(fout);
        oos.writeObject(figuras);
        isSaved = true;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

private class AbreDesenho implements ActionListener {
    private Component parent;
    AbreDesenho(Component parent) {
        this.parent = parent;
    }
    public void actionPerformed(ActionEvent e) {
        try {
        final JFileChooser fc = new JFileChooser();
        FileNameExtensionFilter txtFilter = new FileNameExtensionFilter("Arquivo de texto (.txt)", "txt");
        fc.setFileFilter(txtFilter);


        int returnVal = fc.showOpenDialog(parent);

        if (returnVal != JFileChooser.APPROVE_OPTION)
            System.out.println("File error!");

        System.out.println("Abrindo: " + fc.getSelectedFile().getPath());

        FileInputStream fin = new FileInputStream(fc.getSelectedFile());
        ObjectInputStream ois = new ObjectInputStream(fin);
        figuras = (Vector<Figura>) ois.readObject();
        } catch (Exception ex) {
            ex.printStackTrace();
        return;
        }
    pnlDesenho.getGraphics().clearRect(0 , 0, parent.getHeight(), parent.getWidth());
    for (int i=0 ; i<figuras.size(); i++)
        figuras.get(i).torneSeVisivel(pnlDesenho.getGraphics());
    }
}

Thanks.

Upvotes: 0

Views: 1608

Answers (1)

Eric Leibenguth
Eric Leibenguth

Reputation: 4277

You have to do this manually:

  • Get the File object from the JFileChooser
  • Get its absolute path as a String, using getAbsolutePath().
  • Check whether it has an extension or not: Check file extension in Java
  • If not, add your extension to the path: path = path+".txt";
  • Create a new File object from the path: File file = new File(path)
  • Open/Save the file (your code)

Upvotes: 2

Related Questions