Получить читаемый текст только из буфера обмена - PullRequest
46 голосов
/ 18 августа 2011

Я уже знаю, как получить простой текст из буфера обмена в Java, но иногда текст кодируется каким-то странным DataFlavor, например, при копировании из Microsoft Word или с веб-сайта или даже исходного кода из Eclipse.

Как извлечь чистый текст из этих DataFlavor s?

Ответы [ 3 ]

54 голосов
/ 18 августа 2011
import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;

String data = (String) Toolkit.getDefaultToolkit()
                .getSystemClipboard().getData(DataFlavor.stringFlavor); 

с помощью метода getData () и stringFlavor вы должны получить простой текст из буфера обмена.

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

1 голос
/ 13 июля 2016

Вы можете использовать следующий метод для получения текста буфера обмена в Java:

public String getClipBoard(){
    try {
        return (String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
    } catch (HeadlessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();            
    } catch (UnsupportedFlavorException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();            
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return "";
}
0 голосов
/ 18 августа 2011

Сначала я не работал с буфером обмена, но это кажется интересным

From http://docstore.mik.ua/orelly/java/awt/ch16_01.htm

"Чтобы прочитать данные из буфера обмена, программа вызывает метод Transferable.getTransferData ().Если данные представлены DataFlavor, который не соответствует классу Java (например, plainTextFlavor), getTransferData () возвращает InputStream для вас, чтобы вы могли читать данные из. "

Так что если вы дадите егокласс, который не соответствует, вы получаете InputStream, а затем вы можете прочитать «чистый» текст из InputStream самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...