2017-12-07 13 views
0

파일 이름 목록이있는 드롭 다운 목록이 있습니다. 파일 이름을 드롭 다운에서 선택하면 다음을 수행합니다.파일 확장명 가져 오기 C#

string filename = ddl.SelectedItem.Text; 
string path = "F:\\WorkingCopy\\files\\" + filename +".docx"; 
DownloadFile(path,filename); 

파일 폴더 파일에는 확장자가있을 수 있습니다. 이후 하드 코드 된 ".docx"문자열 경로에 모든 작동합니다. 하지만 ddl.SelectedItem.Text를 사용하여 파일 이름의 확장명을 가져와야합니다. 어떻게하는지 말해 줄 수 있어요?

것들 내가 파일을

string path = "F:\\WorkingCopy\\files\\" + filename 

나는이와 파일 확장명을 얻기 위해 노력하고을의 위치 1.)

string filename = ddl.SelectedItem.Text; 

2) 경로에서 확장자가없는 파일 이름이있다. 아무도 이것에 대해 제안 할 수 있습니까? 선으로 다음과

+1

'filename.ext1'과'filename.ext2'의 두 파일이 있다면 어떻게 될까요? –

+0

내 경우에는 그러한 상황이 없을 것입니다. –

+0

고유 한 파일 이름과 확장자를 갖게됩니다.나는 그런 상황이 없을 것이다 –

답변

2

이 같은 Directory.EnumerateFiles()를 사용할 수 있습니다

string path = "F:\\WorkingCopy\\files\\"; 
string filename = ddl.SelectedItem.Text; 

string existingFile = Directory.EnumerateFiles(path, filename + ".*").FirstOrDefault(); 

if (!string.IsNullOrEmpty(existingFile)) 
    Console.WriteLine("Extension is: " + Path.GetExtension(existingFile)); 

Directory.EnumerateFiles 검색한다 path을 파일 filename.*처럼. Path.GetExtension()은 찾은 파일의 확장자를 반환합니다. 그것이 IEnumerable<string> 대신 string[]을 반환하기 때문에 일반적으로


, 나는 EnumerateFiles() 대신 GetFiles를 사용하는 것을 선호합니다. 이는 필요한 모든 파일을 한 번에 검색하는 대신 일치하는 파일 만 반환한다는 것을 의미합니다. (이것은 귀하의 경우에는 중요하지 않습니다. 단지 일반적인 참고 사항입니다.)

+1

시도했습니다. 하지만이 오류가 발생합니다 'F : \ WorkingCopy \ files \ filename'경로의 일부를 찾을 수 없습니다. 그러나 그 경로는 존재합니다. –

+0

저의 경우,'path'와'filename'이 무엇을 보여 주 었는지 보여줍니다. 물론'path : F : \ WorkingCopy \ files'만을'path'로 사용합니다. –

+0

감사합니다. 그것은 지금 일했습니다. 당신은 내 문제를 해결했습니다. –

0

당신이 달성 할 수

try 
{ 
    var extensions = new List<string>(); 
    var files = Directory.GetFiles("F:\\WorkingCopy\\files\\", filename + ".*", System.IO.SearchOption.TopDirectoryOnly); 

    foreach (var tmpfile in files) 
     extensions.Add(Path.GetExtension(tmpfile)); 

} 
catch (Exception ex) 
{ 
      throw ex; 
} 

이 도움 당신은?

+0

이것은 나를 도와주지 않을 것이다. 확장이 비어 있습니다 –

+0

내 대답을 편집했습니다. –

0

당신은 Directory.GetFiles 방법을 사용할 수 있습니다

string result = Directory.GetFiles(path, filename + ".*").FirstOrDefault(); 

여기 here

참조 "*"WildCard하고 파일 이름이 YourFileName을 시작 검색합니다.

0

Directory.GetFiles() 방법을 사용하십시오. 이 같은 것

string[] files = Directory.GetFiles("F:\\WorkingCopy\\files\\", filename+".*"); 

이렇게하면 파일 이름은 같지만 확장자가 다른 파일 이름 배열을 얻을 수 있습니다. 하나만 가지고 있다면, 항상 첫 번째 것을 사용할 수 있습니다.

0

당신은 단순히 점으로 그들을 분할 할 수 있습니다, 예를 들어,이 코드는 날이에 대한 확장 TXT 파일인지 결과 제공이 코드

 string folder = @"F:\\WorkingCopy\\files\\"; 
     var files = System.IO.Directory.GetFiles(folder, filename + ".*"); 

     if (files.Any()) 
     { 
      string ext = System.IO.Path.GetExtension(files.First()).Substring(1); 
     } 

을 시도합니다.

+0

@ RenéVogt OP는 파일 이름을 알고 싶다. "F : \\ WorkingCopy \\ files \\ "+ filename"무엇이 잘못 되었나요?, 제 대답도 편집합니다. – Adrian

+0

그건 내가 물었던 것이 아닙니다. 친절하게 질문을 올바르게 읽으십시오. –

+0

@SamDaniel 지금 확인하십시오. – Adrian