2009-07-31 4 views
4

잠시 동안 내 머리에 숨어있는 질문입니다. Path.DirectorySeperatorChar의 중요성은 무엇입니까? 우리는 '\'대신에 '\'를 넣을 수 없다는 것을 의미합니다. 특히 응용 프로그램에서 많은 수의 경로를 구성하는 경우 속성을 호출하는 것보다 빠르다는 것이 더 ? 이유가 있을까요? '\'이외의 다른 폴더/파일 경로 분리 문자가있을 수 있습니까? 어쩌면 다른 운영 체제에서?Path.DirectorySeperatorChar를 사용해야합니까? C#

답변

15

예, 해당 속성을 사용하십시오. 미래 지향적 일 것입니다. Mono (Linux)와 호환되지만 MS.NET은 Compact 및 Micro Framework와 같은 다른 플랫폼으로 이동할 수도 있습니다.

그러나 가장 좋은 방법은 Path.Combine()Path.GetFileName() 외에도 사용하는 것이므로 구분 기호 char이 필요하지 않습니다.

+0

호환성 문제가 많습니다. 몰랐는데 – LolaRun

1

Linux의 경우 구분 기호는 /입니다. 그리고 우리는 거기에 모노가 있습니다.

3

경로 결합을 위해 Path.Combine()을 사용하십시오. 불행하게도, Path 클래스의 메소드가 특수 구조체 (Path이 아닌 정적 클래스 일까?) 대신 string에서 작동하기 때문에 가능한 빠를 수 없습니다. 왜 이것이 당신이 묻는 문제입니까? 이 보석 :

예외 :
ArgumentException경로 1 또는이 GetInvalidPathChars에 정의 된 잘못된 문자 중 하나 이상을 포함 경로 2.

+0

아니요! 문제는 없지만 성능 최적화를 요구하고 있습니다. 그러나 당신은 '그것이 가능한 한 빨리'는 아니라고 말했습니다. 문제는 경로의 일반적인 문자열 연결보다 이론적으로 빠릅니까? 더 빠릅니다. Path.Combine() 또는 directory1 + Path.DirectorySeperatorChar + dir2입니다. – LolaRun

+0

'path.Combine()'은'directory1'의 끝에 그리고/또는'directory2'의 시작 부분에 구분 기호가 존재하지 않으면 복사하지 않습니다. 즉, GUI 스레드에서 수천 번 작업을 수행해야하는 경우 옵션을 수동으로 구현하는 것이 훨씬 빠르고 빨라집니다.아마도 백그라운드 프로세스/도구에 대해서는 문제가되지 않을 것이고 "적은 수"의 작업 (수백 이하)에 대해서는 분명하지 않을 것입니다. –

1

Windows는 /를 경로 구분 기호로 사용할 수 있습니까? 호환되도록 사용하십시오. 그러나 combine 메서드를 사용하는 것이 좋습니다.

0

경로 구분 기호에 슬래시를 사용하는 Unix와 같은 다른 플랫폼과 호환되도록 코드를 작성하십시오. 필자는 장치 드라이버 경로와 같이 Windows 자체에 특수한 경우도 있다고 생각합니다.

조쉬의 대답에 대한 설명 : Windows 일반적으로은 경로 구분 기호에 슬래시를 사용할 수 있지만 모든 Windows 응용 프로그램에서 슬래시를 허용하지는 않으며 Windows에서 제공하지 않는 곳이있을 수 있습니다. 예를 들어 명령 행에서 슬래시는 일반적으로 매개 변수를 도입합니다. 그래서 나는 이것에 개인적으로 의지하지 않을 것입니다.

그러나 일부 상황에서 자주 사용하려는 것에 대해서는 매우 장황합니다. 내 자신의 (델파이) 코드에서는 필요한 경우 적절한 종류의 슬래시를 추가하는 "AddSlash"메서드를 사용했습니다. 플랫폼의 올바른 문자로 디코딩 된 새로운 언어 기호 또는 문자 상수를 상상할 수 있습니다.

관련 문제