17 votes

Comment ouvrir un dossier ?

Après avoir enregistré un fichier, je veux ouvrir le dossier du fichier enregistré. Comment puis-je le faire ? Merci beaucoup !

40voto

bbum Points 124887

Si je comprends bien votre question, vous voulez ouvrir le dossier dans lequel quelque chose a été enregistré dans le Finder ?

Cela devrait faire l'affaire -- cela suppose que vous avez une référence au savePanel.

NSURL *fileURL = [savePanel URL];
NSURL *folderURL = [fileURL URLByDeletingLastPathComponent];
[[NSWorkspace sharedWorkspace] openURL: folderURL]; 

Si vous commencez avec un NSString contenant le chemin, alors commencez par :

NSURL *fileURL = [NSURL fileURLWithPath: stringContainingPath];

34voto

Peter Hosey Points 66275

Il serait encore mieux de ne pas se contenter d'ouvrir le dossier, mais de sélectionner le fichier enregistré. NSWorkspace peut le faire pour vous :

[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:
   @[ URLToSavedFile ]];

L'argument est un tableau d'URLs, donc si vous n'avez qu'un seul fichier à révéler, vous passez simplement un tableau d'un objet.

Si, pour une raison ou une autre, vous visez une version de Mac OS X antérieure à 10.6, utilisez plutôt l'ancienne méthode basée sur le chemin d'accès :

[[NSWorkspace sharedWorkspace] selectFile:pathToSavedFile 
                 inFileViewerRootedAtPath:@""];

(Vous voulez passer une chaîne vide pour le second argument afin que le Finder réutilise une fenêtre de Finder existante pour le dossier, s'il y en a une).

11voto

The Pulsing Eye Points 11

Je sais que ce post est assez ancien, mais avec la 10.9, ce que vous voulez faire c'est

NSString* folder = @"/path/to/folder"  
[[NSWorkspace sharedWorkspace]openFile:folder withApplication:@"Finder"];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X