在JavaFX中拖放后如何读取文件到byte []?

时间:2019-01-22 00:07:59

标签: java javafx scenebuilder

这来自简单的base64编码器/解码器程序。我添加了拖放功能,以便用户可以将图像文件拖放到程序上。 d&d可以工作,但是现在我希望程序自动对拖放的图像进行编码并显示其base64字符串。

此方法主要是同一程序中另一方法的再生代码,允许用户上传图像并将其编码为base64字符串。这里的问题是,即使显示图像,每次也会抛出IOException。因此图像无法读取到byte [] ...但是我不知道为什么。

// 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);

    }

我想让这种方法像这样工作: -用户将图像文件拖到程序窗口中 用户删除图像文件 -image在程序的图像查看器中显示 编码的图像字符串显示在适当的窗口中

0 个答案:

没有答案