sauver fichier complet du presse-papiers sur le disque dur

sauver fichier complet du presse-papiers sur le disque dur - Java - Programmation

Marsh Posté le 11-11-2009 à 15:05:46    

Bonjour,
 
Dans une application personnelle que je développe, il me faut sauver sur le disque dur un fichier contenu dans le presse-papier.
 
Typiquement, il s'agit d'un document PDF de 300 Ko attaché à un e-mail sous Outlook.
Un bouton-droit/copier sous Outlook le transfère dans le presse-papiers.
Maintenant, je souhaiterais "simplement" que mon application le récupère dans le presse-papiers et le sauve sur le disque dur.
J'ai lu beaucoup de choses sur Internet, mais cela a généralement trait aux String et aux images. Ici, c'est bien un fichier complet.
Je n'arrive pas à me débrouiller avec DataFlavor.
 
Toute idée de votre part serait la bienvenue.  :)  
 
Merci d'avance,
Cordialement,
 
Nicolas

Reply

Marsh Posté le 11-11-2009 à 15:05:46   

Reply

Marsh Posté le 12-11-2009 à 01:27:08    

Je ne sais vraiment pas si c'est possible et si le fichier lui-même est stocké dans le presse-papiers (et je n'ai pas Outlook) mais voici comment vérifier. D'abord récupérer le presse-papiers du système:
 

Code :
  1. Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();


 
Ensuite, regarder quels sont les flavors disponibles puor le contenu actuellement stocké dans le presse-papiers:
 

Code :
  1. DataFlavor[] flavors = clipboard.getAvailableDataFlavors();


 
Si ça renvoie un tableau non vide, tu dois parcourir les flavors et afficher leur type MIME pour trouver celui que tu vas pouvoir exploiter. Si tu trouves un flavor qui correspond au données binaires de ton fichier, tu le passes en paramètre au presse-papier afin de récupérer son contenu:
 

Code :
  1. Object data = clipboard.getData(flavor);


 
Après, le tout est de savoir quel est le type exact de l'objet renvoyé. Ceci peut être vérifié facilement:
 

Code :
  1. System.out.println(data.getClass().toString());


 
En fonction du type, tu devrais savoir quoi faire pour le stocker sur le disque.
 
 
Bon courage.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed