2006년 10월 15일
Directory.GetFiles
예전에 도스에서 파일명의 형태는 8.3이었다.
파일명 길이8 확장자 길이3, 최대길이로.. 그리고 띄어쓰기도 들어가면 안된다..
이 파일명 형태를 지금의 윈도우에서도 쓸수 있는데 명령창에서 dir /x 라고 치면 확인할수 있고
거기에 나오는 이름으로 파일명을 적을수 있다..
그런데 이게 문제가 된것이..
DirectMove의 테스트를 위해 한 폴더의 ksf들을 ksfa로 확장자를 바꾸고 한개만 테스트용으로 만들어놨더니
ksfa들이 다 검색에 걸린것이다..
Directory.GetFiles이 함수는 8.3 형태의 파일명도 지원하기 때문에
*.ksf로 검색했을 경우 abcd.ksfa 이 파일들이 abcd~1.ksf 의 형태로 인식되서 검색에 걸린것이다..
쉽게
Directory.GetFiles(path, "*.ksf"); 이런식으로 호출했더니
이 함수가 8.3 형태의 파일명을 지원하면서 검색하게 되었다.
그래서 abcd.ksfa가 abcd~1.ksf로 인식돼서 *.ksf에 적합한 파일명으로 인식되었다.
이런 이야기인데
물론 *.ksf의 검색에 abcd.ksfa가 검색됐으니 정상적인게 아니다..
그래서 이를 처리하려면 별도의 함수를 만들어서 처리해야 된다..-_-;;
귀찮게..
재미없는 함수로 해결
private List<string> GetFiles(string ext)
{
List<string> files = new List<string>();
foreach (string file in Directory.GetFiles(path, "*." + ext))
{
if (file.ToLower().EndsWith(ext.ToLower()))
{
files.Add(file);
}
}
return files;
}
파일명 길이8 확장자 길이3, 최대길이로.. 그리고 띄어쓰기도 들어가면 안된다..
이 파일명 형태를 지금의 윈도우에서도 쓸수 있는데 명령창에서 dir /x 라고 치면 확인할수 있고
거기에 나오는 이름으로 파일명을 적을수 있다..
그런데 이게 문제가 된것이..
DirectMove의 테스트를 위해 한 폴더의 ksf들을 ksfa로 확장자를 바꾸고 한개만 테스트용으로 만들어놨더니
ksfa들이 다 검색에 걸린것이다..
Directory.GetFiles이 함수는 8.3 형태의 파일명도 지원하기 때문에
*.ksf로 검색했을 경우 abcd.ksfa 이 파일들이 abcd~1.ksf 의 형태로 인식되서 검색에 걸린것이다..
쉽게
Directory.GetFiles(path, "*.ksf"); 이런식으로 호출했더니
이 함수가 8.3 형태의 파일명을 지원하면서 검색하게 되었다.
그래서 abcd.ksfa가 abcd~1.ksf로 인식돼서 *.ksf에 적합한 파일명으로 인식되었다.
이런 이야기인데
물론 *.ksf의 검색에 abcd.ksfa가 검색됐으니 정상적인게 아니다..
그래서 이를 처리하려면 별도의 함수를 만들어서 처리해야 된다..-_-;;
귀찮게..
재미없는 함수로 해결
private List<string> GetFiles(string ext)
{
List<string> files = new List<string>();
foreach (string file in Directory.GetFiles(path, "*." + ext))
{
if (file.ToLower().EndsWith(ext.ToLower()))
{
files.Add(file);
}
}
return files;
}
# by | 2006/10/15 13:08 | .NET | 트랙백 | 덧글(2)



☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]