IT TIP

C # /. NET에서 경로와 파일 이름을 결합하는 가장 좋은 방법은 무엇입니까?

itqueen 2020. 11. 30. 20:33
반응형

C # /. NET에서 경로와 파일 이름을 결합하는 가장 좋은 방법은 무엇입니까?


경로를 파일 이름과 결합하는 가장 좋은 방법은 무엇입니까?

즉, 주어진 c:\foobar.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;더 간단하고 예기치 않은 결과 없음 ...

참고 URL : https://stackoverflow.com/questions/1048129/what-is-the-best-way-to-combine-a-path-and-a-filename-in-c-net

반응형