2 votes

Copier un fichier dans le presse-papiers

J'essaie de copier un fichier dans le presse-papiers du système. Comme je l'ai trouvé sur Internet, j'essaie d'y parvenir de la manière suivante :

final List<File> files = new ArrayList<File>();
files.add(new File("pathToFile"));

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
    new Transferable() {
    @Override
    public DataFlavor[] getTransferDataFlavors() {
        return new DataFlavor[] { DataFlavor.javaFileListFlavor };
    }

    @Override
    public boolean isDataFlavorSupported(DataFlavor flavor) {
        return DataFlavor.javaFileListFlavor.equals(flavor);
    }

    @Override
    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
        return files;
    }
}, null);

Cependant, après avoir exécuté ce code, je ne suis pas en mesure de coller le fichier du presse-papiers (j'ai essayé sur le bureau et dans l'explorateur système). J'ai même essayé de mettre en veille après parce que j'ai lu que la JVM doit être en cours d'exécution afin de pouvoir coller le contenu du presse-papiers mais cela n'a pas fonctionné pour moi.
Néanmoins, Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); renvoie le fichier correspondant que j'ai copié dans le presse-papiers.
Une chose que j'ai découvert, c'est que Toolkit.getDefaultToolkit().getSystemClipboard().isDataFlavorAvailable(DataFlavor.javaFileListFlavor); renvoie à false . Cela signifie-t-il que le presse-papiers ne prend pas en charge les fichiers ? Cela n'aurait pas de sens puisque je suis capable de copier-coller des fichiers dans l'explorateur en utilisant Ctrlr+C et Ctrl+V.

Je ne sais pas si c'est important mais j'effectue mes tests sous Linux Mint.

Quelqu'un peut-il m'expliquer pourquoi je ne peux pas coller ce fichier copié ou comment je dois le copier pour pouvoir le coller via Ctrl+V dans tout le système ?

0voto

Basil Battikhi Points 2123

Vous pouvez utiliser Commande du terminal

String[] args = new String[] {"/bin/bash", "-c","Your command at terminal", "with", "args"};
Process proc = new ProcessBuilder(args).start();

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