¿Es posible hacer que una carpeta se vea y se comporte como un archivo?

Estoy desarrollando una aplicación de escritorio que guarda sus proyectos en el disco. Los proyectos contienen múltiples archivos, como jsony jpgetc.

Solución actual: archivo comprimido

Los estoy "comprimiendo" todos juntos en un solo archivo . Ejemplo:

filename.project            <- compressed zip
  manifest.json             <- compressed contents
  file1.jpg                 

Solución ideal: carpeta sin comprimir

Me pregunto si es posible enviar los datos, sin comprimir, a una carpeta y, de alguna manera, configurar mi sistema operativo para tratar esa carpeta como un solo archivo . Ejemplo:

filename.project            <- folder, but it gets treated like a file
  manifest.json             <- uncompressed contents
  file1.jpg

Definición de "Tratado como un solo archivo":

  • Finder muestra un icono personalizado
  • Al hacer doble clic, se abre la asociación de archivos.
  • Los cuadros de diálogo "Abrir" pueden seleccionar este archivo

Otros ejemplos

En mi Mac, hay 2 ejemplos en los que veo que esto sucede: - Todas las aplicaciones aparecen como .apparchivos, pero internamente son carpetas que puedo explorar a través de Terminal - 1Password almacena su contraseña en una .agilekeychaincarpeta, que se sincroniza con Dropbox como una carpeta, pero aparece en Finder como un solo archivo.

Respuestas (1)

La información del desarrollador de Apple dice que sí, definitivamente puedes hacer tu propio paquete o paquete. Parece como si quisiera un paquete .

Paquete vs. paquete se discute aquí.

Básicamente, registre su paquete en el sistema, de modo que las carpetas con la extensión se muestren como un paquete en lugar de como una carpeta (la aplicación info.plist debe establecer una clave adecuada LSTypeIsPackagepara cada uno de los tipos de archivo de paquete que necesita crear). Luego configure su aplicación para que NSFileWrappercree automáticamente (usando ) o manualmente el paquete en sí mismo al guardar.

Gracias, esa es exactamente la información que estaba buscando!