Получить читаемый текст только из буфера обмена

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

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

45 голосов | спросил clamp 18 PM00000020000001631 2011, 14:13:16

3 ответа


0
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 вы должны получить простой текст из буфера обмена.

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

ответил Dragon8 18 PM00000020000004931 2011, 14:40:49
0

Вы можете использовать следующий метод для получения текста буфера обмена в 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 "";
}
ответил Mihir Patel 13 J000000Wednesday16 2016, 14:46:28
0

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

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

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

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

ответил Farmor 18 PM00000020000003031 2011, 14:43:30

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132