web-dev-qa-db-fra.com

Obtenir du texte lisible uniquement à partir du Presse-papiers

Je sais déjà comment obtenir du texte brut dans le presse-papiers en Java, mais le texte est parfois codé dans une variable DataFlavor étrange, comme lors de la copie à partir de Microsoft Word ou d'un site Web, voire du code source d'Eclipse.

Comment extraire du texte pur et pur de ces DataFlavors?

45
clamp
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); 

avec la méthode getData () et le stringFlavor, vous devriez obtenir du texte brut dans le presse-papiers.

s'il y a du texte étrange dans le presse-papier, je pense que cela devrait poser un problème de programme qui place les données dans le presse-papier.

53
Dragon8

Vous pouvez utiliser la méthode suivante pour obtenir le texte du presse-papier en 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 "";
}
1
Mihir Patel

D'abord, je n'ai pas travaillé avec le presse-papiers, mais cela semble intéressant

De http://docstore.mik.ua/orelly/Java/awt/ch16_01.htm

"Pour lire les données du Presse-papiers, un programme appelle la méthode Transferable.getTransferData (). Si les données sont représentées par un DataFlavor qui ne correspond pas à une classe Java (par exemple, plainTextFlavor), getTransferData () renvoie un InputStream pour vous de lire les données de. "

Donc, si vous lui donnez une classe qui ne correspond pas, vous obtenez le InputStream et vous pouvez alors lire le texte "pur" du InputStream vous-même.

0
Farmor