Este código verifica primeiro a existência do diretório e o cria, caso contrário, e cria o arquivo depois. Observe que não pude verificar algumas de suas chamadas de método, pois não tenho seu código completo, então estou assumindo que as chamadas para coisas como getTimeStamp()
e getClassName()
funcionarão. Você também deve fazer algo com o possível IOException
que pode ser lançado ao usar qualquer uma das java.io.*
classes - ou sua função que grava os arquivos deve lançar essa exceção (e ser tratada em outro lugar), ou você deve fazer isso no método diretamente. Além disso, presumi que id
seja do tipo String
- não sei, pois seu código não o define explicitamente. Se for algo como um int
, você provavelmente deve convertê-lo em a String
antes de usá-lo no fileName, como fiz aqui.
Além disso, substituí suas append
ligações por concat
ou +
conforme achei apropriado.
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);
}
}
Você provavelmente não deve usar nomes de caminho simples como este se quiser executar o código no Microsoft Windows - não tenho certeza do que fará com o /
nos nomes de arquivo. Para portabilidade total, você provavelmente deve usar algo como File.separator para construir seus caminhos.
Edit : De acordo com um comentário de JosefScript abaixo, não é necessário testar a existência de diretório. A directory.mkdir()
chamada retornará true
se criou um diretório e, false
caso não o tenha feito, incluindo o caso em que o diretório já existia.