Salut à tous
j'ai le code suivant qui contient deux méthodes une qui copie un fichier dans un autre et une qui enregistre un nouveau fichier .Je veux en fait passer le fichier enregistré comme paramètre d'entrée à la méthode de copie plus particulièrement le paramètre qui identifie le fichier copie. voici ce que me génère l'exécution :java.lang.NullPointerException
at Fichier.save(Fichier.java:94)
at Fichier.main(Fichier.java:108)
Le code de ma classe est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 import java.awt.TextArea; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.nio.channels.FileChannel; import javax.swing.JFileChooser; public class Fichier { private TextArea textArea; String nom_fichier; public static boolean copyFile(File source, File dest){ try{ // Declaration et ouverture des flux java.io.FileInputStream sourceFile = new java.io.FileInputStream(source); try{ java.io.FileOutputStream destinationFile = null; try{ destinationFile = new FileOutputStream(dest); // Lecture par segment de 0.5Mo byte buffer[] = new byte[512 * 1024]; int nbLecture; while ((nbLecture = sourceFile.read(buffer)) != -1){ destinationFile.write(buffer, 0, nbLecture); } } finally { destinationFile.close(); } } finally { sourceFile.close(); } } catch (IOException e){ e.printStackTrace(); return false; // Erreur } return true; // Résultat OK } public String save() throws IOException { String S=new String(); JFileChooser filechoose = new JFileChooser(); // Créer un JFileChooser File dir =new File("./"); filechoose.setCurrentDirectory(dir); // Le répertoire source du JFileChooser est le répertoire dâToù est lancé notre programme String approve = new String("Enregistrer"); // Le bouton pour valider lâTenregistrement portera la mention ENREGSITRER int resultatEnregistrer = filechoose.showDialog(filechoose,approve); // Pour afficher le JFileChooserâ| if (resultatEnregistrer == JFileChooser.APPROVE_OPTION) // Si lâTutilisateur cliqu sur le bouton ENREGSITRER { nom_fichier = new String(filechoose.getSelectedFile().toString()); // Récupérer le nom du fichier quâTil a spécifié if (nom_fichier.endsWith(".txt")) {System.out.println(" c bon");} else {nom_fichier = nom_fichier.concat(".txt");} FileWriter lu = new FileWriter(nom_fichier); // Créer un objet java.io.FileWriter avec comme argument le mon du fichier dans lequel enregsitrer BufferedWriter out = new BufferedWriter(lu); // Mettre le flux en tampon (en cache) out.close(); // Fermer le flux (câTest toujours mieux de le fermer explicitement) S="".concat(dir.getPath()).concat("/").concat(textArea.getText()).concat(""); } return S; } public static void main(String argv[]) throws IOException { Fichier F=new Fichier(); String dest=new String(); dest=F.save(); String path="C:/file"; File source=new File(path); File desti=new File(dest); boolean copy; copy= F.copyFile(source,desti); } }
Partager