不使用Files怎么做?

时间:2015-03-28 10:37:25

标签: java

我有以下代码:

Connection.Response captchaResponse = Jsoup.connect(CAPTCHA_URL)
                .timeout(3000)
                .cookies(cookies)
                .userAgent("Mozilla/5.0")
                .method(Method.GET)
                .ignoreContentType(true)
                .execute();

        cookies.putAll(captchaResponse.cookies());


        // writing captcha image to file
        FileOutputStream fileWriter = new FileOutputStream(new File(CAPTCHA_FILENAME));
        fileWriter.write(captchaResponse.bodyAsBytes());
        fileWriter.close();

        showImage(CAPTCHA_FILENAME,"captcha");

showImage功能:

public void showImage(String filename,String title) throws IOException
{
    ImageIcon icon = new ImageIcon(ImageIO.read(new File(filename)));
    JFrame frame = new JFrame(title);
    JLabel imageLabel = new JLabel();
    imageLabel.setIcon(icon);
    frame.add(imageLabel);
    frame.setSize(100,100);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setVisible(true);
}

我有一个需要显示的验证码。为此,我将验证码存储在一个文件中并每次都读取该文件。有没有办法可以在不涉及文件的情况下做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用ByteArrayOutputStream代替FileOutputStream来存储验证码。然后:

ByteArrayInputStream imageInput=new ByteArrayInputStream(outputStream.toByteArray());

使用以下代码将您的ByteArrayOutputStream转换为ByteArrayInputStream showImage中使用的代码:

ImageIO.read(imageInput);