69 votes

Récupérer le texte lisible uniquement à partir du presse-papiers

Je sais déjà comment récupérer du texte brut à partir du presse-papiers en Java, mais parfois le texte est codé dans un format bizarre DataFlavor comme lors de la copie d'un document Microsoft Word, d'un site web ou même d'un code source d'Eclipse.

Comment extraire du texte pur et simple de ces DataFlavor s ?

81voto

Dragon8 Points 607
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 le getData() Méthode et stringFlavor vous devriez obtenir du texte brut à partir du presse-papiers.

S'il y a du texte bizarre dans le presse-papiers, je pense que cela devrait être un problème du programme qui met les données dans le presse-papiers.

4voto

Mihir Patel Points 384

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

0voto

Farmor Points 4928

Je n'ai jamais travaillé avec le presse-papiers mais cela semble intéressant.

Desde 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 que vous puissiez lire les données."

Ainsi, si vous lui donnez une classe qui ne correspond pas, vous obtenez l'InputStream et vous pouvez ensuite lire vous-même le texte "pur" de l'InputStream.

-1voto

dimka3210 Points 1

DataFlavor.stringFlavor - est une constante.

Les développeurs pourraient, pour plus de clarté, écrire dans le registre supérieur. Cette entrée plonge dans la stupeur. Pas du tout clair que la nécessité de passer ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X