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);
 
}
}