Bonjour,
Est-il possible d'envoyer des fichiers sur une clé USB usb en java, par le biais d'un stream ?
Merci d'avance
Version imprimable
Bonjour,
Est-il possible d'envoyer des fichiers sur une clé USB usb en java, par le biais d'un stream ?
Merci d'avance
Tout dépend de ce que tu appelles stream. Mais que cela soit une clé, un disque dur, le réseau ou autres ca ne change rien du tout ....
Salut,
Regarde ceci: JFileChooser, avec cette classe tu pourras choisir l'emplacement de ta clé, et le récupérer pour enregistrer ton fichier dessus. Par contre, ça implique qu'il y ai un utilisateur (ça ne sera pas "automatisé").
En espérant que cela puisse t'aider
Merci pour le conseil du JFilechooser ! Je n'y avais pas pensé. Est ce que je peux considerer ma clé usb comme un file sous windows ? Pour stocker un fichier dans l'emplacement de la clé, sous ubuntu, je dois passer par du shell ?
J'aurais bien vu un outputstream *
Il me semble (semble vouloir te vexer) que tu mélanges un peu tout non?
Je ne me vexe pas (je suis un noob). Est ce que tu peux etre un peu plus precis par contre stp ?
Voici mon code, à l'éxécution, un fichier rempli de ###Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 package communicationusb; import java.io.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFileChooser; import javax.swing.JOptionPane; /** * * @author remi */ public final class USBport { public USBport(File acopier){ JOptionPane.showMessageDialog(null, "Merci de selectionner un fichier au hasard de votre clé usb"); JFileChooser chooser = new JFileChooser(); int rep = chooser.showOpenDialog(chooser); if(rep == JOptionPane.OK_OPTION){ try { copieFichier(acopier, chooser.getCurrentDirectory()); } catch (FileNotFoundException ex) { System.out.println(ex.getMessage()); JOptionPane.showMessageDialog(null, "Erreur lors de la copie","Erreur",JOptionPane.ERROR_MESSAGE); } catch (IOException ex) { System.out.println(ex.getMessage()); JOptionPane.showMessageDialog(null, "Erreur lors de la copie","Erreur",JOptionPane.ERROR_MESSAGE); } } } public void copieFichier(File source, File RepertoireDestination) throws FileNotFoundException, IOException{ //Inspiré de developpez.com if(!RepertoireDestination.isDirectory()) { System.out.println("Erreur;"); return; } String stri = source.toString(); System.out.println(stri); int beginIndex = stri.lastIndexOf("."); stri = stri.substring(beginIndex); File destination = File.createTempFile("tmp",stri, RepertoireDestination); FileInputStream sourceIn = new FileInputStream(source); FileOutputStream destOut = new FileOutputStream(destination); byte b [] = new byte[1024*512]; //Creation d'un tableau de bytes de 0.5M0 //Il sera utile pour lire par paquets de bytes int nbrDeByteLus; do{ nbrDeByteLus = sourceIn.read(b); //On compte le nbr de bytes lus if(nbrDeByteLus!=-1) //Si il est == -1 , c'est EOF destOut.write(b, nbrDeByteLus, nbrDeByteLus); }while(nbrDeByteLus!=-1); sourceIn.close(); destOut.close(); destination.renameTo(source); } }
Ha ben voila ca ressemble plus a ce qu'il te faut en effet :)
Maintenant qu'est-ce qui dans ce code ne te satisfait pas ?
Ah, ba pourtant lors de mes cours de systeme d'exploitations on m'a repeté que sous unix "tout est fichier". J'ai du mal capté un truc à cette phrase, non ?
J'ai rajouté cette ligne maintenant je selectionne directement un dossier :DCode:
1
2 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
Le problème à l'éxècution c'est que mon dossier .odt est mal copié (quand je louvre il est rempli de #) et son nom n'est pas celui que j'aurai voulu.
"Phylosophiquement" oui tout est fichier. Mais non tout n'est pas fichier ou sont les répertoires ;) ? (et les liens symboliques etc)
Regarde ici :
http://docs.oracle.com/javase/1.4.2/...1;], int, int)Code:destOut.write(b, nbrDeByteLus, nbrDeByteLus);
Tu as pas le bon offset pour moi déja comme premier probleme.
Ah okay je comprend mieux du coup !
Merci d'avoir trouvé l'erreur : tout fonctionne maintenant ! :ccool::ccool:
A + et encore merci