Dieser Code prüft zuerst, ob das Verzeichnis vorhanden ist, erstellt es, falls nicht, und erstellt anschließend die Datei. Bitte beachten Sie, dass ich einige Ihrer Methodenaufrufe nicht überprüfen konnte, da ich nicht über Ihren vollständigen Code verfüge. Daher gehe ich davon aus, dass die Aufrufe von Dingen wie getTimeStamp()
und getClassName()
funktionieren werden. Sie sollten auch etwas mit dem Möglichen tun, das IOException
bei Verwendung einer der java.io.*
Klassen ausgelöst werden kann - entweder sollte Ihre Funktion, die die Dateien schreibt, diese Ausnahme auslösen (und sie wird an anderer Stelle behandelt), oder Sie sollten dies direkt in der Methode tun. Außerdem habe ich angenommen, dass dies id
vom Typ ist String
- ich weiß es nicht, da Ihr Code es nicht explizit definiert. Wenn es etwas anderes wie ein ist int
, sollten Sie es wahrscheinlich in ein String
umwandeln, bevor Sie es im Dateinamen verwenden, wie ich es hier getan habe.
Außerdem habe ich Ihre append
Anrufe durch concat
oder +
nach meinem Ermessen ersetzt.
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);
}
}
Sie sollten wahrscheinlich keine bloßen Pfadnamen wie diesen verwenden, wenn Sie den Code unter Microsoft Windows ausführen möchten - ich bin nicht sicher, was er mit /
den Dateinamen tun wird . Für eine vollständige Portabilität sollten Sie wahrscheinlich File.separator verwenden , um Ihre Pfade zu erstellen .
Bearbeiten : Laut einem Kommentar von JosefScript unten ist es nicht notwendig, die Existenz eines Verzeichnisses zu testen. Der directory.mkdir()
Aufruf wird zurückgegeben, true
wenn ein Verzeichnis erstellt wurde, und false
wenn dies nicht der Fall ist, einschließlich des Falls, in dem das Verzeichnis bereits vorhanden war.