Ist es möglich, dass ein Ordner wie eine Datei aussieht und sich wie eine Datei verhält?

Ich entwickle eine Desktop-Anwendung, die ihre Projekte auf der Festplatte speichert. Projekte enthalten mehrere Dateien, wie jsonund jpgetc.

Aktuelle Lösung: gezippte Datei

Ich "komprimiere" sie alle zusammen in eine einzige Datei . Beispiel:

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

Ideale Lösung: unkomprimierter Ordner

Ich frage mich, ob es möglich ist, die Daten stattdessen unkomprimiert in einen Ordner auszugeben und mein Betriebssystem irgendwie so zu konfigurieren, dass es diesen Ordner als eine einzelne Datei behandelt . Beispiel:

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

Definition von „als einzelne Datei behandelt“:

  • Finder zeigt ein benutzerdefiniertes Symbol
  • Ein Doppelklick öffnet die Dateizuordnung
  • "Öffnen"-Dialoge können diese Datei auswählen

Weitere Beispiele

Auf meinem Mac gibt es 2 Beispiele, wo ich das sehe: - Alle Apps erscheinen als .appDateien, aber intern sind Ordner, die ich über Terminal durchsuchen kann - 1Password speichert seinen Passwortspeicher in einem .agilekeychainOrdner, der als Ordner mit Dropbox synchronisiert wird, aber erscheint im Finder als einzelne Datei.

Antworten (1)

Apple Developer Info sagt ja, Sie können definitiv Ihr eigenes Paket oder Bündel erstellen. Scheint, als ob Sie ein Paket wollen .

Paket vs. Bundle wird hier besprochen.

Grundsätzlich - registrieren Sie Ihr Paket beim System, sodass Ordner mit der Erweiterung als Paket und nicht als Ordner angezeigt werden (Anwendung info.plist muss den Schlüssel LSTypeIsPackagefür jeden der Paketdateitypen, die Sie erstellen müssen, entsprechend festlegen). NSFileWrapperStellen Sie dann Ihre App so ein, dass sie das Paket beim Speichern automatisch erstellt (mit ), oder erstellen Sie es manuell.

Danke, das ist genau die Information, die ich gesucht habe!