Il seguente codice non crea sempre il file. Per quanto ho notato, la prima volta che questo codice è stato eseguito, anche se non viene lanciata alcuna eccezione e createdFileSucceeded == true, il file non viene creato.File file Java.createNewFile non creato e nessuna eccezione generata
ho eseguire il codice su Windows, Java 6.
Qualsiasi input potrebbe essere utile
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);
}
}
}
forse l'utente che esegue l'applicazione non dispone di privilegi sufficienti per creare un file in quella directory –
@LuiggiMendoza ma eseguendo il codice, consecutivamente, all'interno dello stesso processo, per la seconda volta crea il file. –
Non ho provato a eseguire il codice, ma sospetto che la creazione di tmpDir dopo aver creato il file che si aspetta di esistere in quella directory potrebbe causare un comportamento imprevisto dai metodi File come exists(). – GreyBeardedGeek