2010-01-01 4 views
15

C#에서 파일 경로를 쓸 때 "C : \"또는 "C : /"와 같은 것을 작성하고 동일한 경로를 얻을 수 있음을 발견했습니다. 어떤 것이 좋습니다? 나는 어딘가에서 /를 사용하는 것이 \ (이스케이프 된 시퀀스로 \를 사용하는 것)보다 권장되었다고 들었다.C에서 폴더 경로에/또는 \ 사용

+0

이 문제를 지적한 John Saunders에게 감사드립니다. Windows 문제입니다. 나는 /를 사용하는 것이 더 나은/교차 호환성에 좋다고 들었는데, 이것은 Windows를 목표로 삼을 때별로 중요하지 않습니다. – DMan

+0

제목의 버그 : "// or \"이 아닌 "/ or \\"이어야합니다. – sblom

+0

@ sblom- 정확한 차이는 확실치 않지만 작동하므로 고침 : p – DMan

답변

24

Windows는 경로 구분 기호를 모두 지원하므로 둘 다 로컬 경로 (네트워크 경로에는 작동하지 않음)에서 작동합니다.

string path = @"C:\" //Look ma, no escape 

유일한 경우 내가 혜택을 볼 수 있습니다 : 문제는 Windows의 작업 만이 아닌 표준 경로 구분자 (/)를 사용하여 실제 혜택은 당신이 리터럴 그대로 문자열을 사용할 수 있습니다, 특히 있기 때문에,이 없다는 것입니다/separator를 사용하면 상대 경로로만 작업하고 Windows 및 Linux에서는이 코드를 사용합니다. 그런 다음 "../foo/bar/baz"가 같은 디렉토리를 가리킬 수 있습니다. 그러나이 경우에도 System.IO 네임 스페이스 (Path.DirectorySeparatorChar, Path.Combine)를 남겨 두어 이러한 문제를 해결하는 것이 좋습니다.

+4

"원시 문자열 연산자"는 실제로 "축 어적 문자열 리터럴"입니다. –

+0

답장을 보내 주셔서 감사합니다! – DMan

+0

@Jay : "축 어적 문자열 상수 연산자"? 또는 "축 어적 문자열 리터럴"일까요? –

4

나는 다음과 같은 C#에서 경로를 쓰기 :

@ "C : 내 \ 경로 \"

@ 문자가 이스케이프 \ 꺼집니다.

1

이것은 C# 문제가 아니며 Windows와 관련된 문제입니다. Windows의 경로는 일반적으로 백 슬래시 : C :와 함께 표시됩니다. 제 의견으로는 C#에서 사용해야하는 것입니다. 백 슬래시 문자를 특별히 처리하지 않으려면 @ "C : \"를 사용하십시오.

8

Path.Combine을 사용하면 이러한 의미 체계에 대해 걱정할 필요가 없습니다.

+0

Path.Combine이 단지 2 개의 매개 변수를 사용하는 것은 너무 나쁩니다. –

+1

@MikeCole .NET 4.0 이후, 오버로드는'params' 키워드를 통해 임의의 개수의 매개 변수를 취합니다. – nawfal

21

Poita가 제안한대로 Path.Combine을 사용하면 Path.DirectorySeparatorChar 이상을 사용하십시오.

+1

'Path.PathSeparator'는 PATH 환경 변수에서 경로를 분할하는 문자입니다. Windows에서는';'입니다. 이 답변은'DirectorySeparatorChar'를 참조하도록 업데이트되었습니다. –

+0

수정 해 주셔서 감사 드리며, DirectorySeparatorChar에 대한 게시물을 올리려는 의도였습니다. – SolutionYogi

+0

올바른 해결책입니다. –