Как мне прочитать файл в byte [] при перетаскивании в JavaFX? - PullRequest
0 голосов
/ 22 января 2019

Это из простой программы кодирования / декодирования base64. Я добавляю функцию перетаскивания, чтобы пользователь мог перетаскивать файлы изображений в программу и удалять их. d & d работает, но теперь я хочу, чтобы программа автоматически кодировала отброшенное изображение и отображала его строку base64.

Этот метод в основном использует переработанный код из другого метода в той же программе, который позволяет пользователю загружать изображение и кодировать его в строку base64. Проблема здесь в том, что IOException генерирует каждый раз, даже если изображение отображается. Таким образом, изображение не читается в байтах [] ... но я не могу понять, почему.

// a method that handles drop events
    @FXML
    private void handleDrop(DragEvent event) throws FileNotFoundException 
{
        // display the image on file drop
        List<File> files = event.getDragboard().getFiles();
        Image img = new Image(new FileInputStream(files.get(0)));
        imageDisplay.setImage(img);

        // encode the image on file drop
        byte[] imageBytes;
        try {
            File droppedFile = new File("/path");
            Path path = Paths.get(droppedFile.getAbsolutePath());
            imageBytes = Files.readAllBytes(path);

        } catch (IOException e) {
            showAlert(Alert.AlertType.ERROR, "Byte reader error", "Sorry, I was unable to read the file to a byte array.");
            return;
        }

        String encodedString = Base64.getEncoder().encodeToString(imageBytes);
        textArea.setText(encodedString);

    }

Я бы хотел, чтобы этот метод работал так: -user перетаскивает файл изображения в окно программы -пользователь сбрасывает файл изображения -изображение отображается в программе просмотра изображений в программе строка в кодированном изображении отображается в соответствующем окне

...