Saber si un archivo esta abierto

Saber si un archivo esta abierto

Postby mariordz » Thu Aug 08, 2019 2:14 pm

Buenos días, estoy experimentando con un servidor FTP que monte en un servidor de Ubuntu, hasta hora he podido exitosamente subir y descargar archivos, pero tengo una duda, al momento de descargar un archivo del servidor a la máquina local, como puedo saber si el archivo esta abierto? En las pruebas que he realizado cuando descargo un archivo en mi máquina lo he tenido abierto con Excel, el proceso aparentemente se ejecuta y me aparece el mensaje de que la descarga fue exitosa, pero si intento eliminar ese archivo me aparece que no lo puedo eliminar, ya que Excel lo tiene abierto, en otras palabras cuando descarga el archivo realmente no lo hace, ya que el archivo esta abierto, sin embargo me sigue diciendo que la descarga fue exitosa (supongo que descarga el archivo a memoria de forma temporal y despues intenta escribirlo al archivo de destino y como esta abierto no lo puede escribir) ¿Como puedo capturar el status del archivo para saber si esta abierto e informarle al usuario para que lo cierre y reintente?

Gracias por la ayuda que puedan brindarme.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: Saber si un archivo esta abierto

Postby mariordz » Thu Aug 08, 2019 7:12 pm

Despues de intentar con algunos métodos se me ocurrio este pequeño "hack":

Si intentas borrar un archivo con la instrucción delete file

Code: Select all  Expand view
delete file &cArch_Rec


En caso de que por alguna causa no lo pueda borrar simplemente no te manda un mensaje de error y asume que la instrucción fue completada, entonces lo que hice fue comprobar si el archivo aún existía después de haberlo "borrado", si el archivo todavía estaba ahí es porque no lo pudo borrar, por lo tanto se entiende que el archivo esta abierto, en caso contrario el archivo ha sido eliminado y puedo descargarlo desde mi site FTP sin mayor problema.

Code: Select all  Expand view
delete file &cArch_Rec
if file(cArch_rec)
   ?"El archivo no se pudo recuperar, verifique que no este en uso y reintente"
else
   hFsourc:="/files/"+aRecoi[nElems]+".FDB"
   DEFINE DIALOG oDlg SIZE 500,100 TITLE "Descargando archivo desde servidor FTP" TRANSPARENT
   @ 1, 2 PROGRESS oPrg SIZE 225, 15
   oDlg:bStart := { || download(oPrg) }
   ACTIVATE DIALOG oDlg CENTER
endif
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 59 guests