Pregunta

Quiero escribir / eliminar un archivo, pero a veces me cuelgo si otro programa está utilizando el archivo. ¿Cómo verifico si otro proceso abre el archivo o si puedo abrirlo para escribirlo?

¿Fue útil?

Solución

El problema es que, entre el momento en que verifica si puede obtener acceso exclusivo y la apertura del archivo, otra cosa obtiene acceso exclusivo al archivo, y de todos modos obtiene la excepción.

La única forma infalible de ver si puede obtener un bloqueo exclusivo en un archivo es intentar obtener un bloqueo exclusivo en el archivo, si lo obtiene, lo tiene.

Si no, se detecta la excepción, y cualquiera

  • Ve a hacer otra cosa
  • Espere un momento e intente nuevamente

¡Es una de las situaciones de la vida & # 8217; donde es mejor pedir perdón que permiso :)

Otros consejos

Hay una nueva forma de obtener el origen del bloqueo de archivos para Vista y hasta aquí: http: // www. remkoweijnen.nl/blog/2011/01/03/cannot-access-files-but-need-the-origin/

Modo de usuario: La mejor manera de escribir en un archivo bloqueado es pedirle al usuario que lo cierre en el otro proceso. En los procesos por lotes, debe ignorar dicho archivo y registrar el problema. Proporcionar el nombre del otro proceso es una muy buena manera de encontrar una solución para el usuario.

No estoy seguro en qué lenguaje de programación le gustaría verificar si puede escribir en un archivo. En Java, java.io .File.canWrite () puede hacer el trabajo por usted.

General:

En sistemas operativos tipo UNIX, puede utilizar el comando lsof .

Si desea ver qué programa tiene un identificador para su archivo, use el Monitor de procesos (descargar de MicroSoft).

Esta herramienta tiene una interfaz de línea de comandos, por lo que puede utilizar la interfaz de secuencias de comandos de su idioma (por ejemplo, java.lang.Process) para ejecutar la herramienta y mostrar un mensaje de error útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top