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 ?