Qual è il modo più semplice per ottenere la directory in cui si trova un file? Sto usando questo per impostare una directory di lavoro.
string filename = @"C:\MyDirectory\MyFile.bat";
In questo esempio, dovrei ottenere "C: \ MyDirectory".
Qual è il modo più semplice per ottenere la directory in cui si trova un file? Sto usando questo per impostare una directory di lavoro.
string filename = @"C:\MyDirectory\MyFile.bat";
In questo esempio, dovrei ottenere "C: \ MyDirectory".
Risposte:
Se hai sicuramente un percorso assoluto, usa Path.GetDirectoryName(path).
Se potresti ottenere solo un nome relativo, usa new FileInfo(path).Directory.FullName.
Si noti che Pathe si FileInfotrovano entrambi nello spazio dei nomi System.IO.
new FileInfo(path).Directory.FullNamedovrebbe funzionare in entrambi i casi.
È possibile utilizzare System.IO.Path.GetDirectory(filename)o trasformare il percorso in a FileInfoe utilizzare FileInfo.Directory.
Se stai facendo altre cose con il percorso, FileInfopotrebbero avere dei vantaggi.
Puoi usare Path.GetDirectoryNamee semplicemente passare il nome del file.
Se si lavora con un FileInfooggetto, esiste un modo semplice per estrarre una stringrappresentazione del percorso completo della directory tramite la DirectoryNameproprietà.
Descrizione della FileInfo.DirectoryNameproprietà tramite MSDN:
Ottiene una stringa che rappresenta il percorso completo della directory.
Esempio di utilizzo:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
Link alla documentazione MSDN .
È possibile ottenere il percorso dell'applicazione corrente utilizzando:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
In bocca al lupo!
È possibile utilizzare Path.GetFullPathper la maggior parte del caso. Ma se vuoi ottenere il percorso anche nel caso in cui il nome del file sia relativamente localizzato, puoi usare il metodo generico qui sotto:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
Per esempio:
GetPath("C:\Temp\Filename.txt") ritorno "C:\Temp\"
GetPath("Filename.txt")ritorna current working directorycome"C:\Temp\"
Nel mio caso, dovevo trovare il nome della directory di un percorso completo (di una directory), quindi ho semplicemente fatto:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"e non MyDirectory. Il consiglio di usare i metodi di manipolazione delle stringhe è rischioso, ci sono molte trappole, piuttosto usare Pathmetodi dedicati .
Path.GetDirectoryName (Context.Parameters [ "assemblypath"])
Path.GetDirectoryNameè menzionato in molte altre risposte (inclusa la risposta accettata)
@"C:\MyDirectory\MyFile.bat"