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 IOExceptionque 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 ides 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 Stringantes de usarlo en fileName como lo he hecho aquí.
Además, reemplacé sus appendllamadas con concato +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á truesi creó un directorio, y falsesi no lo hizo, incluido el caso cuando el directorio ya existía.