Der folgende Code erstellt die Datei nicht immer. Soweit ich festgestellt habe, das erste Mal, dass dieser Code ausgeführt wurde, obwohl keine Ausnahme ausgelöst wird und createdFileSucceeded == true, wird die Datei nicht erstellt.Java-Datei file.createNewFile wurde nicht erstellt und es wurden keine Ausnahmen ausgelöst
betreibe ich den Code unter Windows, Java 6.
Jede Eingabe nützlich sein könnte
File file = new File(tmpDir, fileName);
try {
if (tmpDir == null) {
String environmentHomePath // = somePath;
tmpDir = new File(environmentHomePath, "SampleDumps");
if (! tmpDir.exists() || ! tmpDir.isDirectory()) {
boolean mkdirSucceeded = tmpDir.mkdir();
if (! mkdirSucceeded) {
throw new IOException("Failed creating directory: '" + tmpDir.getAbsolutePath() + "'");
}
}
}
if (file.exists()) {
boolean deleteFileSucceeded = file.delete();
if (! deleteFileSucceeded) {
throw new IOException("Unable to delete pre existing sample file: '" + fileName + "'");
}
}
boolean createFileSucceeded = file.createNewFile();
if (! createFileSucceeded) {
throw new IOException("Unable to create sample file: '" + fileName + "'");
}
fw = new FileWriter(file);
bw = new BufferedWriter(fw);
StringBuilder sb = new StringBuilder("something...");
bw.write(sb.toString());
bw.flush();
}
catch (IOException ioe) {
log.warn("Unable to file invalid sample to file: '" + fileName + "'", ioe);
}
finally {
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
log.warn("Unable to close Writer to file: '" + fileName + "'", e);
}
}
else if (fw != null) {
try {
fw.close();
} catch (IOException e) {
log.warn("Unable to close Writer to file: '" + fileName + "'", e);
}
}
}
vielleicht hat der Benutzer, der die Anwendung ausführt, nicht genug Berechtigungen, um eine Datei in diesem Verzeichnis –
@LuiggiMendoza zu erstellen, aber den Code nacheinander im selben Prozess auszuführen, zum zweiten Mal erstellt die Datei. –
Ich habe nicht versucht, Ihren Code auszuführen, aber ich würde vermuten, dass das Erstellen des tmpDir nach dem Erstellen der Datei, die in diesem Verzeichnis vorhanden sein soll, unerwartete Verhalten von Dateimethoden wie exists() verursachen kann. – GreyBeardedGeek