Obtenez du texte lisible uniquement à partir du presse-papiers

Je sais déjà comment obtenir du texte brut à partir du presse-papiers en Java, mais parfois le texte est encodé dans des DataFlavor étranges, comme lors de la copie à partir de Microsoft Word ou d’un site Web ou même du code source d’Eclipse.

Comment extraire du texte brut pur de ces DataFlavor ?

 import java.awt.HeadlessException; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; Ssortingng data = (Ssortingng) Toolkit.getDefaultToolkit() .getSystemClipboard().getData(DataFlavor.ssortingngFlavor); 

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

S’il y a un texte bizarre dans le presse-papier, je pense que cela devrait poser problème au programme qui met les données dans le presse-papier.

Vous pouvez utiliser la méthode suivante pour obtenir le texte du presse-papiers en Java:

 public Ssortingng getClipBoard(){ try { return (Ssortingng)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.ssortingngFlavor); } 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 ""; } 

D’abord, je n’ai pas travaillé avec le presse-papier, 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 de lire les données. ”

Donc, si vous lui donnez une classe qui ne correspont pas, vous obtenez le InputStream, puis vous pouvez lire le texte “pur” de InputStream vous-même.