Comment naviguer dans quelques dossiers jusqu'?
Une option serait de faire Système.IO.Répertoire.GetParent() à quelques reprises. Est-il plus gracieuse façon de voyager quelques dossiers où l'assembly en cours d'exécution réside?
Ce que j'essaie de faire est de trouver un fichier texte qui se trouve un dossier au-dessus le dossier de l'application. Mais l'assemblée elle-même est à l'intérieur de la cellule, qui est un peu de dossiers dans le dossier de l'application.
- Combien de dossiers?
- dire 4 dossiers en place.
- habituellement, un chemin d'accès relatif fait le truc comme '..\..\..\..\Downfolder", mais elle dépend surtout de ce que vous essayez de le faire pour...?
- est-ce toujours le cas?
- "Naviguer" comment? Entendez-vous le répertoire courant? Si oui, vous devriez être en mesure de faire
Directory.SetCurrentDirectory(@"..\..\..\..");
Vous devez vous connecter pour publier un commentaire.
Autre moyen simple est de le faire:
Note Cela va dans les deux niveaux. Le résultat serait:
newPath = @"C:\Folder1\Folder2\";
Path.Combine
lors de l'ajout de barre oblique inverse manuellement de toute façon. Pensez à utiliserPath.Combine(path, "..", "..")
à la place.si c:\folder1\folder2\folder3\bin est la voie ensuite le code suivant sera de retour le chemin de la base de dossier de dossier bin
c'est à dire,c:\folder1\folder2\folder3
si vous voulez folder2 chemin, alors vous pouvez obtenir le répertoire par
alors vous obtiendrez chemin c:\folder1\folder2\
Vous pouvez utiliser
..\path
pour remonter d'un niveau,..\..\path
aller deux niveaux de chemin.Vous pouvez utiliser
Path
classe trop.C# Chemin d'accès de la classe
C'est ce qui fonctionne le mieux pour moi:
string parentOfStartupPath = Path.GetFullPath(Path.Combine(Application.StartupPath, @"../"));
Obtenir le "droit" chemin d'accès n'était pas le problème, en ajoutant '../' n'est évidemment qu', mais après cela, la chaîne n'est pas utilisable, car il ne fera qu'ajouter de la '../' à la fin.
L'entourer avec les
Path.GetFullPath()
va vous donner le chemin absolu, le rendant utilisable.La méthode suivante recherches un fichier commençant par le démarrage de l'application path (*.dossier exe). Si le fichier ne s'y trouve pas, les dossiers parents sont recherchés jusqu'à ce que soit trouvé le fichier ou le dossier racine a été atteint.
null
est renvoyée si le fichier n'a pas été trouvé.Remarque:
Application.StartupPath
est généralement utilisé dans les applications WinForms, mais il fonctionne dans les applications de console ainsi; toutefois, vous devrez définir une référence à laSystem.Windows.Forms
de l'assemblée. Vous pouvez remplacerApplication.StartupPath
parPath.GetDirectoryName(Assembly.GetExecutingAssembly().Location)
si vous préférez.cela peut aider
Vous pourriez peut-être utiliser une fonction, si vous voulez déclarer le nombre de niveaux et le mettre dans une fonction?
Et vous pouvez l'appeler comme ceci:
Si vous connaissez le dossier vers lequel vous souhaitez naviguer, rechercher l'index de celui-ci puis de sous-chaîne.
a
, par exemple? Que faire si le chemin ressemble à ceC:\Folderame3\Folderame2\Folderame\...
?J'ai des répertoires virtuels et je ne peux pas utiliser le Répertoire de méthodes. Alors, j'ai fait un simple split/join fonction pour ceux qui sont intéressés. Pas aussi sûr que.
Donc, si vous souhaitez vous déplacer à 4, vous avez juste besoin de changer le
1
à4
et ajouter quelques vérifications pour éviter les exceptions.