¿Hay alguna manera de usar FileOutputStream de una manera que si un archivo (String filename) no existe, entonces lo creará?
FileOutputStream oFile = new FileOutputStream("score.txt", false);
java
file
file-io
new-operator
fileoutputstream
Stefan Dunn
fuente
fuente
createNewFile()
método, como se muestra en mi ejemplo.createNewFile()
sí mismo comprueba atómicamente la existencia del archivo.createNewFile()
Es una pérdida total de tiempo aquí. El sistema ya lo hará. Solo lo estás obligando a mirar dos veces.Antes de crear un archivo, es necesario crear todos los directorios de los padres.
Utilizar
yourFile.getParentFile().mkdirs()
fuente
Puede crear un archivo vacío si existe o no ...
si quieres dejar el archivo si existe ...
Solo obtendrá una FileNotFoundException si intenta crear el archivo en un directorio que no existe.
fuente
FileNotFoundException
en ambos casos.Pase esto
f
a suFileOutputStream
constructor.fuente
FileUtils de apache commons es una muy buena manera de lograr esto en una sola línea.
Esto creará carpetas principales si no existen y creará un archivo si no existe y generará una excepción si el objeto del archivo es un directorio o no se puede escribir en él. Esto es equivalente a :
Todas las operaciones anteriores arrojarán una excepción si el usuario actual no tiene permiso para realizar la operación.
fuente
Crear archivo si no existe. Si el archivo sale, borre su contenido:
fuente
Simplemente dando una forma alternativa de crear el archivo solo si no existe usando Path and Files.
fuente
Potencialmente puede obtener un
FileNotFoundException
si el archivo no existe.La documentación de Java dice:
Si está utilizando Java 7, puede usar el paquete java.nio:
fuente
new FileOutputStream(f)
creará un archivo en la mayoría de los casos, pero desafortunadamente obtendrá una excepción FileNotFoundExceptionde Javadoc
En otras palabras, podría haber muchos casos en los que obtendría FileNotFoundException que significa "No se pudo crear su archivo", pero no podría encontrar la razón por la cual falló la creación del archivo.
Una solución es eliminar cualquier llamada a la API de archivos y utilizar la API de archivos, ya que proporciona un manejo de errores mucho mejor. Por lo general, reemplace cualquiera
new FileOutputStream(f)
conFiles.newOutputStream(p)
.En los casos en los que necesite usar la API de archivo (porque usa una interfaz externa que usa File, por ejemplo), usar
Files.createFile(p)
es una buena manera de asegurarse de que su archivo se cree correctamente y, de lo contrario, sabría por qué no funcionó. Algunas personas comentaron anteriormente que esto es redundante. Es cierto, pero obtienes un mejor manejo de errores que puede ser necesario en algunos casos.fuente