files - Java FileOutputStream Create File si no existe
java directory exists create (8)
¿Hay alguna forma de usar FileOutputStream de forma que si un archivo (String filename) no existe, entonces lo creará?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
Antes de crear un archivo, es necesario crear todos los directorios principales.
Use yourFile.getParentFile().mkdirs()
Crear archivo si no existe. Si el archivo sale, borre su contenido:
/**
* Create file if not exist.
*
* @param path For example: "D:/foo.xml"
*/
public static void createFile(String path) {
try {
File file = new File(path);
if (!file.exists()) {
file.createNewFile();
} else {
FileOutputStream writer = new FileOutputStream(path);
writer.write(("").getBytes());
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Puede crear un archivo vacío, ya sea que exista o no ...
new FileOutputStream("score.txt", false).close();
si quieres dejar el archivo si existe ...
new FileOutputStream("score.txt", true).close();
Solo obtendrá una excepción FileNotFoundException si intenta crear el archivo en un directorio que no existe.
Puede obtener una FileNotFoundException
si el archivo no existe.
La documentación de Java dice:
Si un archivo está disponible o si se puede crear depende de la plataforma subyacente http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html
Si está utilizando Java 7, puede usar el paquete java.nio:
El parámetro options especifica cómo se crea o abre el archivo ... abre el archivo para escritura, creando el archivo si no existe ...
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html
Solo dando una forma alternativa de crear el archivo solo si no existe usando Path y Files.
Path path = Paths.get("Some/path/filename.txt");
Files.createDirectories(path.getParent());
if( !Files.exists(path))
Files.createFile(path);
Files.write(path, ("").getBytes());
FileUtils de apache commons es una forma bastante buena de lograr esto en una sola línea.
FileOutputStream s = FileUtils.openOutputStream("/home/nikhil/somedir/file.txt")
Esto creará carpetas principales si no existen y crea un archivo si no existe y lanza una excepción si el objeto de archivo es un directorio o no se puede escribir. Esto es equivalente a :
File file = new File("/home/nikhil/somedir/file.txt");
file.getParentFile().mkdirs(); // Will create parent directories if not exists
file.createNewFile();
FileOutputStream s = new FileOutputStream(file,false);
Todas las operaciones anteriores generarán una excepción si el usuario actual no tiene permiso para realizar la operación.
FileNotFoundException
una FileNotFoundException
si el archivo no existe y no se puede crear ( doc ), pero lo creará si puede. Para asegurarse de que primero debería probar que el archivo existe antes de crear FileOutputStream
(y crear con createNewFile()
si no es así):
File yourFile = new File("score.txt");
yourFile.createNewFile(); // if file already exists will do nothing
FileOutputStream oFile = new FileOutputStream(yourFile, false);
File f = new File("Test.txt");
if(!f.exists()){
f.createNewFile();
}else{
System.out.println("File already exists");
}
Pase esta f
a su constructor FileOutputStream
.