problème de copie d'un fichier
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:
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);
}
} |