Este código comprueba primero la existencia del directorio y lo crea si no es así, y crea el archivo después. Tenga en cuenta que no pude verificar algunas de sus llamadas a métodos porque no tengo su código completo, así que supongo que las llamadas a cosas como getTimeStamp()
y getClassName()
funcionarán. También debe hacer algo con lo posible IOException
que se puede lanzar al usar cualquiera de las java.io.*
clases: o su función que escribe los archivos debe lanzar esta excepción (y se maneja en otro lugar), o debe hacerlo directamente en el método. Además, asumí que id
es de tipo String
, no lo sé, ya que su código no lo define explícitamente. Si es algo más como an int
, probablemente debería convertirlo en a String
antes de usarlo en fileName como lo he hecho aquí.
Además, reemplacé sus append
llamadas con concat
o +
como vi apropiado.
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();
}
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);
}
}
Probablemente no debería usar nombres de ruta desnudos como este si desea ejecutar el código en Microsoft Windows; no estoy seguro de qué hará con /
los nombres de archivo. Para una portabilidad completa, probablemente debería usar algo como File.separator para construir sus rutas.
Editar : Según un comentario de JosefScript a continuación, no es necesario probar la existencia del directorio. La directory.mkdir()
llamada regresará true
si creó un directorio, y false
si no lo hizo, incluido el caso cuando el directorio ya existía.