jfilechooser, сохранить файл кратных, изображение? - PullRequest
0 голосов
/ 04 марта 2020

Я хочу, чтобы jfilechooser выбирал несколько типов, но я получаю сообщение об ошибке в моем fileinputstream, как показано ниже:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
    try {
        JFileChooser ch = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
        int c = ch.showOpenDialog(this);
        ch.setMultiSelectionEnabled(true);
        ch.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        ch.setMultiSelectionEnabled(true);
        if (c == JFileChooser.APPROVE_OPTION) {
            File[] f = ch.getSelectedFiles();


            FileInputStream in = new FileInputStream(); 
            /// the error start from in here
            byte b[] = new byte[in.available()];
            in.read(b);
            Data data = new Data();
            lblNewLabel.setText(ch.getSelectedFile().getAbsolutePath());
            data.setName(lblNewLabel.getText().trim());
            data.setFile(b);
            out.writeObject(data);
            out.flush();
            textArea.append("send 1 file ../n");
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this, e, "Error",
                JOptionPane.ERROR_MESSAGE);
    }

}`

Может ли каждый это исправить?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020
    FileInputStream in = new FileInputStream(); 
    /// the error start from in here
    byte b[] = new byte[in.available()];
    in.read(b);

Создание экземпляра FileInputStream in = new FileInputStream () неверно. Как сказал nvplus , вы должны выбрать ОДИН файл и создать его экземпляр следующим образом

File f = ch.getSelectedFile();
FileInputStream in = FileInputStream(f); // <---
0 голосов
/ 04 марта 2020

Похоже, вы используете метод .getSelectedFile(), хотя вы выбрали несколько файлов.

Вы должны использовать метод .getSelectedFiles(), как в строке 9 примера кода, и выполнять итерацию по File[].

...