Problem z zapisem pliku z automatycznym rozszerzeniem

0

Witam!

Mam problem z automatycznym dodawaniem rozszerzenia przy zapisywaniu pliku. Używam JFileChoosera, dodaję filtr rozszerzenia, ale dalej po wpisaniu nazwy pliku zapis odbywa się bez rozszerzenia:

                JFileChooser saveFileChooser = new JFileChooser();
                FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG", "jpg");
                saveFileChooser.setFileFilter(filter);
                saveFileChooser.addChoosableFileFilter(filter);
                int returnval = saveFileChooser.showSaveDialog(mainPanel);
                if (returnval == JFileChooser.APPROVE_OPTION) {
                	FileWriter fw = new FileWriter(file);
                     	fw.write(White + "," + Black);
            	fw.close();
                }

Wszystko działa elegancko, tylko plik jest bez rozszerzenia. Próbowałem też tak to obejść:

String path = saveFileChooser.getSelectedFile().getAbsolutePath() + ".pgn";
File file = new File(path);

Ale oprócz tego że zwraca nullPointerException, to na pewno nie jest to najlepsze rozwiązania.
Ma ktoś jakiś pomysł?

0

Po pierwsze, filtr wpływa tylko na to jakie pliki są wyświetlane w oknie JFileChoosera.
Po drugie, ten kod

if (returnval == JFileChooser.APPROVE_OPTION) 
{
    FileWriter fw = new FileWriter(file);

nie ma sensu. Jaki jest związek zmiennej file z JFileChooserem?

0

Masz rację - file był przekazywany do innej funkcji i pomieszało mi się jak wklejałem kod. Tam jest oczywiście:

Filewriter fw = new Filewriter(saveFileChooser.getSelectedFile());

Ok, czyli filtr nie jest do rozszerzeń przy zapisie.
To jak w takim razie to rozwiązać?

0

Jakoś tak:

String nameOfFile=saveFileChooser.getSelectedFile().getAbsolutePath();
if(!nameOfFile.toLowerCase().endsWith("jpg"))
{
    nameOfFile+=".jpg";
}
0

Proste i skuteczne:) Choć dalej trochę nie chcę mi się wierzyć, że JFileChooser nie udostępnia takiej funkcji.

W każdym razie teraz śmiga. Dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1