OpenFileDialog 경로 / 파일 이름에서 경로 추출


81

파일 선택으로 시작하는 작은 유틸리티를 작성 중입니다. 그런 다음 폴더를 선택해야합니다. 선택한 파일이 있던 폴더를 기본 폴더로 지정하고 싶습니다.

OpenFileDialog.FileName전체 경로 및 파일 이름을 반환합니다 -내가 원하는 것은 경로 부분 (sans filename) 만 가져 오는 것이므로 처음 선택한 폴더 로 사용할 수 있습니다 .

    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)
    {
       ...
    }

이 작업을 수행하는 .NET 메서드가 있습니까, 아니면 regex, split, trim,등 을 사용해야합니까 ??

답변:


114

Path클래스를 사용하십시오 System.IO. 파일 경로 GetDirectoryName의 디렉토리 부분을 반환하는 등 원하는 작업을 수행하는 것을 포함하여 파일 경로를 조작하는 데 유용한 호출이 포함되어 있습니다 .

사용법은 간단합니다.

string directoryPath = Path.GetDirectoryName(filePath);

4
고마워요-간단한 대답이어야했습니다. 참고 사항 : 자정 이후의 코딩은 권장되지 않습니다. VS 문서에 이것을 공용 정적 문자열 GetDirectoryName (string path)로 나열하고 매개 변수를 잘못 해석했기 때문에 메서드 프로토 타입 이상의 것을 읽는 것도 도움이됩니다.
Kevin Haines

29

이것은 어떤가요:

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

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

2
사용자가 파일을 선택하면 초기 디렉토리가 변경됩니까? 그렇지 않은 경우이 방법은 사용자가 디렉토리를 변경할 때 문제를 일으킬 수 있습니다. 또한 나는 그가 FileName그의 sourceFolder.
Brian J

7

FileDialog 대신 FolderBrowserDialog를 사용하고 OK 결과에서 경로를 가져올 수 있습니다.

FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";

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

1
따라서 먼저 파일을 선택한 다음 다시 탐색하여 폴더를 선택 하시겠습니까 ??
shinzou

0

여기에 간단한 방법이 있습니다!

string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.