El siguiente código no siempre crea el archivo. Por lo que he notado, la primera vez que se ejecutó este código, aunque no se lanzó ninguna excepción y se creóFileSucceeded == true, el archivo no se crea.Java file.createNewFile no se creó el archivo y no se lanzaron excepciones
que ejecuta el código en Windows, Java 6.
Cualquier entrada puede ser útil
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);
}
}
}
tal vez el usuario que ejecuta la aplicación no tiene suficientes privilegios para crear un archivo en ese directorio –
@LuiggiMendoza pero ejecuta el código, consecutivamente, dentro del mismo proceso, por segunda vez crea el archivo. –
No he intentado ejecutar su código, pero sospecho que crear el tmpDir después de crear el archivo que espera existir en ese directorio puede estar causando un comportamiento inesperado de los métodos de archivo como exists(). – GreyBeardedGeek