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 Path
e si FileInfo
trovano entrambi nello spazio dei nomi System.IO
.
new FileInfo(path).Directory.FullName
dovrebbe funzionare in entrambi i casi.
È possibile utilizzare System.IO.Path.GetDirectory(filename)
o trasformare il percorso in a FileInfo
e utilizzare FileInfo.Directory
.
Se stai facendo altre cose con il percorso, FileInfo
potrebbero avere dei vantaggi.
Puoi usare Path.GetDirectoryName
e semplicemente passare il nome del file.
Se si lavora con un FileInfo
oggetto, esiste un modo semplice per estrarre una string
rappresentazione del percorso completo della directory tramite la DirectoryName
proprietà.
Descrizione della FileInfo.DirectoryName
proprietà 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.GetFullPath
per 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 directory
come"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 Path
metodi dedicati .
Path.GetDirectoryName (Context.Parameters [ "assemblypath"])
Path.GetDirectoryName
è menzionato in molte altre risposte (inclusa la risposta accettata)
@"C:\MyDirectory\MyFile.bat"