Ce code vérifie d'abord l'existence du répertoire et le crée dans le cas contraire, puis crée le fichier par la suite. Veuillez noter que je n'ai pas pu vérifier certains de vos appels de méthode car je n'ai pas votre code complet, donc je suppose que les appels à des choses comme getTimeStamp()
et getClassName()
fonctionneront. Vous devez également faire quelque chose avec le possible IOException
qui peut être levé lors de l'utilisation de l'une des java.io.*
classes - soit votre fonction qui écrit les fichiers doit lever cette exception (et elle doit être gérée ailleurs), soit vous devez le faire directement dans la méthode. De plus, j'ai supposé que c'était id
de type String
- je ne sais pas car votre code ne le définit pas explicitement. Si c'est autre chose comme an int
, vous devriez probablement le convertir en a String
avant de l'utiliser dans le fileName comme je l'ai fait ici.
De plus, j'ai remplacé vos append
appels par concat
ou +
comme je l'ai jugé approprié.
public void writeFile(String value){
String PATH = "/remote/dir/server/";
String directoryName = PATH.concat(this.getClassName());
String fileName = id + getTimeStamp() + ".txt";
File directory = new File(directoryName);
if (! directory.exists()){
directory.mkdir();
// If you require it to make the entire directory path including parents,
// use directory.mkdirs(); here instead.
}
File file = new File(directoryName + "/" + fileName);
try{
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(value);
bw.close();
}
catch (IOException e){
e.printStackTrace();
System.exit(-1);
}
}
Vous ne devriez probablement pas utiliser de noms de chemins nus comme celui-ci si vous souhaitez exécuter le code sur Microsoft Windows - je ne suis pas sûr de ce qu'il fera avec /
les noms de fichiers. Pour une portabilité totale, vous devriez probablement utiliser quelque chose comme File.separator pour construire vos chemins.
Edit : Selon un commentaire de JosefScript ci-dessous, il n'est pas nécessaire de tester l'existence d'un répertoire. L' directory.mkdir()
appel sera renvoyé true
s'il a créé un répertoire, et false
s'il ne l'a pas fait, y compris le cas où le répertoire existait déjà.