Pad extraheren uit OpenFileDialog pad/bestandsnaam

Ik ben een klein hulpprogramma aan het schrijven dat begint met het selecteren van een bestand, en dan moet ik een map selecteren. Ik wil de map standaard terugzetten naar waar het geselecteerde bestand zich bevond.

OpenFileDialog.FileNameretourneert het volledige pad & bestandsnaam– ik wil alleen het padgedeelte (zonder bestandsnaam)verkrijgen, zodat ik dat kan gebruiken als de initiële geselecteerde map.

   private System.Windows.Forms.OpenFileDialog ofd;
    private System.Windows.Forms.FolderBrowserDialog fbd;
    ...
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        string sourceFile = ofd.FileName;
        string sourceFolder = ???;
    }
    ...
    fbd.SelectedPath = sourceFolder; // set initial fbd.ShowDialog() folder
    if (fbd.ShowDialog() == DialogResult.OK)
    {
       ...
    }

Zijn er .NET-methoden om dit te doen, of moet ik regex, split, trim,enz. gebruiken?


Antwoord 1, autoriteit 100%

Gebruik het Pathclass van System.IO. Het bevat nuttige aanroepen voor het manipuleren van bestandspaden, waaronder GetDirectoryNamedie doet wat je wilt, het directorygedeelte van het bestandspad teruggevend.

Gebruik is eenvoudig.

string directoryPath = Path.GetDirectoryName(filePath);

Antwoord 2, autoriteit 28%

wat dacht je hiervan:

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");

Antwoord 3, autoriteit 16%

if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}

Antwoord 4, autoriteit 7%

U kunt FolderBrowserDialog gebruiken in plaats van FileDialog en het pad uit het OK-resultaat halen.

FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";
if (browser.ShowDialog() == DialogResult.OK)
{
  tempPath  = browser.SelectedPath; // prints path
}

Antwoord 5

Hier is de eenvoudige manier om het te doen!

string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));

Antwoord 6

Dit was alles wat ik nodig had voor het volledige pad naar een bestand

@openFileDialog1.FileName

Other episodes