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 DataFlavor
s?
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.
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 "";
}
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.