2015-03-28 3 views
0

У меня есть следующий код:Как это сделать без использования файлов?

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

У меня есть капчу, который нужно отобразить. Для этого я сохраняю капчу в файле и каждый раз читаю файл. Есть ли способ, которым я могу сделать это без привлечения файлов?

+0

что это за 'ShowImage()'? – ha9u63ar

+0

Функция отображения штрих-кода в окне (JFrame). – cyberpirate92

+2

У меня не совсем вопрос. Например, вы можете сохранить свою капчу в базе данных. Или в памяти. Это немного непонятно, ПОЧЕМУ вы хотите избежать файлов. –

ответ

2

Вы можете использовать ByteArrayOutputStream вместо FileOutputStream, чтобы сохранить капчу. Тогда:

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

превратить ваш ByteArrayOutputStream в ByteArrayInputStream для использования в showImage с этим кодом:

ImageIO.read(imageInput); 
+0

спасибо, что сработало. – cyberpirate92

+0

@cyberPheonix рада помочь! – lodo

Смежные вопросы