그렇다면 Windows에서 경로 슬래시 (/ 또는 \)의 올바른 방향은 무엇입니까?
Windows는 \
파일 경로에 백 슬래시를 작성한다고 주장하는 반면 .NET의 URI 클래스는 슬래시로 작성합니다 /
. 가장 원시적 인 시스템에서도 허용되는 올바른 방법이 있습니까? .NET의 URI가 나머지 Windows와 비교하여 다른 슬래시를 표시하는 이유는 무엇입니까?
파일 경로와 URI가 다릅니다. \
Windows 파일 경로 /
에서 올 바르고 URI에서 올 바릅니다.
따라서이 파일 경로 C:\Documents\Foo
는 다음 URI로 변환됩니다.file:///C:/Documents/Foo
Windows는 이와 관련하여 운영 체제의 자식이지만 많은 API도 슬래시를 허용합니다. Windows에서 파일 경로는 다음과 같습니다.
C:\Users\jsmith\Documents\file.txt
Unix 계열 시스템 (Mac OS X 및 Linux 포함)에서 동일한 경로는 다음과 같습니다.
/home/jsmith/Documents/file.txt
표준화에 대한 URL, RFC 1738는 , 항상 플랫폼에 관계없이 슬래시를 사용합니다 :
http://home.example.com/Documents/file.txt
그 이유는 역사적입니다. Windows조차도 URL에 대한 우리의 생각을 바꿀 수 없습니다. 백 슬래시에 대해 이야기 할 때 백 슬래시를 사용하는 유일한 플랫폼은 Windows (및 일부 다른 참신한 플랫폼)입니다.
Windows 이외의 백 슬래시가 사용되는 경우 UNC 경로가 될 수 있지만 Windows는 다음과 같은 주요 지지자이기도합니다.
\\HOMESVR\Documents\file.txt
그리고 당신이 무엇을 하든지, 당신의 웹 사이트를 광고하지 말고 "내 회사 닷컴 백 슬래시 프로모션"이라고 말하지 마십시오.
그 이유는 약간의 역사 때문입니다. UNIX가 생성되었을 때 또는 내가 UNICS라고 말해야 할 때 디렉토리 구분자로 /를 선택했습니다. 예전에는 저장 매체가 다소 작았으며 루트의 모든 디렉토리는 또 다른 마운트 된 저장 장치였습니다 (/ bin / lib 등).
Microsoft에서 MS-DOS 버전 1.0을 출시 할 때 디렉터리 지원이 없었습니다. 프로그램의 매개 변수에 / 문자를 사용했습니다 (프로그램 / a / b).
Q-DOS의 빠른 리 브랜딩 인 MS-DOS 1.0은 CP / M에서 파생 된 운영 체제로, 드라이브 문자 (A : C : 등)를 상속 받았습니다.
이후 버전에서는 디렉토리 지원을 추가하고 싶었 기 때문에 /가 이미 운영 체제에서 다른 의미를 가지고 있기 때문에 \를 사용하기로 선택했습니다.
현대 운영 체제에는 컴퓨터 역사의 많은 인공물이 있는데, 대부분의 사람들이 깨닫지 못하지만 여전히 작동 방식에 큰 영향을 미칩니다.
그렇다면 올바른 방법은 무엇입니까? Microsoft가 DOS에 디렉토리 지원을 구현하기 전에 UNIX와 유사한 운영 체제가 존재했기 때문에 /라고 말할 수 있습니다.
참고로 .NET에 대해 이야기 System.IO.Path.DirectorySeparatorChar
하면서 현재 경로 구분 기호를 가져 오는 데 사용해야 합니다.
파일 시스템 경로 구분 기호에 관한 한, 저는 Windows에서 모든 API가 슬래시를 받아 들일 것이라고 믿습니다. ).
사실, 내가 올바르게 기억하면 MS-DOS조차도 하위 디렉터리 (v2.0)를 지원하기 시작한 이후로 API 수준에서 경로 구분 기호로 '/'를 허용했지만 그 당시 '/'문자는 이미 다음과 같이 설정되었습니다. 명령 줄 옵션의 '스위치'문자이므로 백 슬래시는 DOS (및 이후 Windows)에서 사실상 경로 구분자가되었습니다.
URI는 유사하지만 파일 경로와는 다른 동물이며 URI는 항상 '/'를 사용하여 구성 요소를 구분해야합니다. Windows 응용 프로그램 및 API는 아마도 사람들이 해당 시스템에서 백 슬래시를 구분자로 사용하는 데 익숙하고 URI를 로컬 파일을 나타내는 데 사용할 수 있기 때문에 URI에서 구분자로 '\'를 허용 할 것입니다.
오늘의 쓸모없는 퀴즈-MS-DOS의 일부 초기 버전에는 명령 줄 옵션 스위치 문자 (일반적으로 '/'에서 '-'로)를 변경하는 API가있어서 명령이 더 유닉스와 비슷하게 보이고 명령이 명령 줄에서 경로 구분 기호로 '/'를 허용합니다. API는 성공하지 못했으며 (애플리케이션에서 보편적으로 지원되지 않았기 때문에) 이후 버전에서 제거되었습니다.
흠 ... 두 번째 읽기에서이 전체 답변은 거의 쓸모없는 퀴즈입니다.
Windows는 \
파일 시스템 구분 기호로 백 슬래시 ( )를 사용합니다 . 그 밖의 모든 경우에는 슬래시 ( /
) 가 사용됩니다 . Uri
그 방법이 때문에 유형 슬래시를 사용하여 균일 한 리소스 식별자가 정의된다.
웹은 슬래시 (/)로 경로에서 디렉토리를 구분하는 UNIX 방식을 기반으로합니다. Windows는 백 슬래시 (\)로 디렉토리를 구분합니다.
올바른 방법은 용도에 따라 다릅니다. Windows 시스템의 로컬 파일 경로에는 백 슬래시를 사용하십시오. UNIX 기반 컴퓨터 (Mac, Linux 포함)에있는 웹 리소스 또는 파일에 대한 경로에는 슬래시를 사용합니다.
.NET의 URI가 슬래시를 사용하는 이유는 웹 브라우저에서 사용하기위한 형식이기 때문입니다.
서버는 웹 리소스를 하드 드라이브의 파일에 연결하는 데 필요한 모든 작업을 수행합니다.
Windows는 경로에 대해 둘 다 허용합니다.
Windows 탐색기를 열고 입력 시도 C:/Temp/Foo
, c:\Temp\Foo
제대로 열립니다.
\ 백 슬래시는 항상 탈출에주의해야하므로 위험합니다. 많은 프로그래밍 언어에는 이스케이프를 위해 백 슬래시를 사용하는 printf가 있습니다.
/ Frontslash is mostly harmless.
: colon was (and to some degree still is) used by Apple.
ReferenceURL : https://stackoverflow.com/questions/1589930/so-what-is-the-right-direction-of-the-paths-slash-or-under-windows
'code' 카테고리의 다른 글
스칼라 관용적 코딩 스타일은 비효율적 인 코드 작성을위한 멋진 함정일까요? (0) | 2021.01.09 |
---|---|
django 튜토리얼 테스트 실행 실패-polls.tests라는 모듈이 없습니다. (0) | 2021.01.09 |
SystemInformation.ComputerName, Environment.MachineName 및 Net.Dns.GetHostName의 차이점 (0) | 2021.01.08 |
iPhone에서 CoreData 또는 SQLite를 사용하십니까? (0) | 2021.01.08 |
Java에서 텍스트 문자열을위한 좋은 64 비트 해시 함수는 무엇입니까? (0) | 2021.01.08 |