반응형
C # /. NET에서 경로와 파일 이름을 결합하는 가장 좋은 방법은 무엇입니까?
경로를 파일 이름과 결합하는 가장 좋은 방법은 무엇입니까?
즉, 주어진 c:\foo
및 bar.txt
, 나는 원합니다 c:\foo\bar.txt
.
주어 c:\foo
와 ..\bar.txt
나는 오류 또는 중 하나를 원한다 c:\foo\bar.txt
(I가 사용할 수 있도록 Path.Combine()
직접). c:\foo
및 마찬가지로 bar/baz.txt
오류 또는 c:\foo\baz.txt
(아님 c:\foo\bar\baz.txt
)을 원합니다 .
파일 이름에 '\'또는 '/'가 포함되어 있지 않은지 확인할 수 있지만 충분합니까? 그렇지 않은 경우 올바른 수표는 무엇입니까?
"잘못된"파일 이름으로 오류를 생성하려면 :
if (Path.GetFileName(fileName) != fileName)
{
throw new Exception("'fileName' is invalid!");
}
string combined = Path.Combine(dir, fileName);
또는 예외를 발생시키지 않고 "잘못된"파일 이름을 자동으로 수정하려는 경우 :
string combined = Path.Combine(dir, Path.GetFileName(fileName));
다음을 사용할 수 있습니다.
Path.Combine(folder, Path.GetFileName(fileName))
또는 \를 건너 뛰려면 (테스트되지 않은 경우 Path.GetFileName이이를 자동으로 처리 할 수 있습니다)
Path.Combine(folder, Path.GetFileName(fileName.Replace("/","\\")))
사용할 때 Path.Combine(arg1, arg2)
사용자가 arg2에 대해 정규화 된 파일 경로를 입력하면 arg1을 무시하고 arg2를 경로로 사용합니다.
제 생각에는 Microsoft가 망쳐 놓았습니다! 이로 인해 사용자가 전체 파일 시스템을 해킹 할 수 있습니다. 작은 글씨를 읽으십시오! 경로를 결합하는 경우 사용 : var newPath = path1 + @"\" + path2;
더 간단하고 예기치 않은 결과 없음 ...
반응형
'IT TIP' 카테고리의 다른 글
Ansible-디렉토리의 경우 모드 755, 파일의 경우 재귀 적으로 644 (0) | 2020.11.30 |
---|---|
Python, Pandas : DataFrame의 내용을 텍스트 파일에 기록 (0) | 2020.11.30 |
C # ASP.NET TLS를 통해 이메일 보내기 (0) | 2020.11.30 |
함수형 프로그래밍의 맥락에서 구성 가능성은 무엇을 의미합니까? (0) | 2020.11.30 |
PHP의 엄격한 모드? (0) | 2020.11.30 |