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.