2010-07-20 17 views
9

Estoy desarrollando para la plataforma Android.
Mi aplicación crea un archivo temporal con una simple llamada a:Eliminación de archivos creados con FileOutputStream

FileOutputStream fos = openFileOutput("MY_TEMP.TXT", Mode); 

Funciona bien porque puedo escribir en él y leerlo con normalidad.

El problema es que cuando salgo de la aplicación quiero eliminar este archivo. Usé:

File f = new File(System.getProperty("user.dir"), "MY_TEMP.TXT"); 
f.delete() 

Pero siempre devuelve falso y el archivo no se elimina.
que he intentado:

File f = new File("MY_TEMP.TXT"); 
f.delete(); 

Y tampoco funciona.

Respuesta

10

He comprobado esta publicación y la mejor manera de eliminar un archivo creado desde FileOutputStream es una llamada simple desde el método Contexto deleteFile (TEMP_FILE) tan simple como eso.

+0

¡Eso es correcto! ¡Es extremadamente simple! simplemente llamando a deleteFile (TEMP_FILE); Va directamente a la carpeta asignada al perfil y es portátil según la documentación. Funciona para mi necesidad. ¡Guau, estaba totalmente en el camino equivocado! De todos modos, gracias a todos ustedes por apuntarme en la dirección correcta. –

+0

Sí, es la forma más rápida de borrar el archivo creado con FileOutputStream – anticafe

7

No puede eliminar un archivo abierto. Debe cerrar la secuencia antes de eliminar.

fos.close(); 
f.delete(); 

Dicho esto, yo prefiero usar File#createTempFile() dejar que la plataforma subyacente hacer el trabajo de limpieza automática y para evitar posibles problemas de portabilidad causados ​​por el uso de rutas relativas en File.

+1

De 'docs createTempFile': "Este método proporciona sólo una parte de una instalación de archivo temporal para organizar un archivo creado por este método se borre automáticamente, utilice el 'deleteOnExit)' método (.. " – Powerlord

+0

R. Bemrose: un SO decente limpia periódicamente el directorio temporal. – BalusC

+1

@BalusC: Es una pena que Windows no sea un SO decente. ;) Y no puedo hablar por Android sobre cómo manejaría eso. – Powerlord

0

Haga una doble comprobación, si el flujo está cerrado antes de intentar eliminar el archivo.

0

Ya tiene algunas respuestas sólidas, pero solo quiero mencionar File.deleteOnExit(), que programa un archivo para su eliminación cuando la VM se cierra.

--edit--

Aún debe cerrar cualquier corriente conectados al archivo.

+0

Eso no funcionará cuando no cierre el archivo. – BalusC

+0

No estoy diciendo que lo haría. Simplemente otra forma de borrar archivos :) – willcodejavaforfood

1

tiene que cerrar el archivo, antes de eliminarlo. use el código a continuación.

 FileOutputStream fos = openFileOutput("MY_TEMP.TXT",Mode); 
     File f = new File(System.getProperty("user.dir"),"MY_TEMP.TXT"); 
     fos.close(); 
     File f = new File("MY_TEMP.TXT"); 
     f.delete(); 
Cuestiones relacionadas