es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

macOS verifica si el archivo está disponible sin conexión (gdrive, dropbox, one drive, nexcloud)

Cuando itero sobre archivos, debo verificar si el archivo está disponible sin conexión si la unidad es una “unidad virtual”, por ejemplo.
Al trabajar con la función de “archivos en streaming” de GDrive, los archivos en el buscador se consideran ya sea “disponibles sin conexión” u “online solamente”. La misma función existe para otros proveedores de almacenamiento en la nube como OneDrive, nextcloud y dropbox. Para mi aplicación, verificar el estado antes de acceder al archivo es muy importante para no activar una descarga no intencional de los archivos a través del controlador de la unidad virtual.

En Windows, las cosas son simples al verificar los atributos de archivo FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS y FILE_ATTRIBUTE_RECALL_ON_OPEN.

En Mac, no logro encontrar un equivalente pero para iCloud. Estoy verificando todo tipo de atributos a través del diccionario NSFileManager attributesOfItemAtPath y el NSURL resourceValues.

En OneDrive, parece que funciona simplemente verificando si NSURLFileAllocatedSizeKey es cero. Sin embargo, GDrive parece almacenar en caché los datos en algún lugar y siempre informa que NSURLFileAllocatedSizeKey es cero, incluso si el archivo está disponible sin conexión.

Claramente, debe haber una etiqueta / bandera / atributo para consultar desde el sistema de archivos, ¿verdad?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para verificar si un archivo está disponible sin conexión o solo en línea en una unidad virtual como GDrive, es necesario tener cuidado de no provocar una descarga involuntaria al verificar el estado antes de acceder al archivo. En Windows, esto se puede lograr al verificar los atributos del archivo FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS y FILE_ATTRIBUTE_RECALL_ON_OPEN. Sin embargo, parece que no hay un equivalente para iCloud en Mac. Para verificar los atributos, se pueden utilizar el diccionario NSFileManager attributesOfItemAtPath y NSURL resourceValues. Para OneDrive, parece funcionar verificar si NSURLFileAllocatedSizeKey es cero. Por otro lado, GDrive almacena en caché los datos y siempre informa que NSURLFileAllocatedSizeKey es cero incluso cuando el archivo está disponible sin conexión. Debe existir una etiqueta, bandera o atributo que se pueda consultar en el sistema de archivos en estos casos.

Comments are closed.