자바는 윈도우 경로 역슬레시 ₩ 를 인식 하지 못한다

윈도우에서 자바 소스를 컴파일 할 때 파일 경로를 역슬레시(\)로 넣으면 인식을 못한다.

문자열에 \를 포함시키면 컴파일 할 때 escape character ~ 어쩌고 하면서 에러가 날텐데 그 라인 찾아가보면

String path = "C:\Windows\System32"

처럼 문자열의 경로가 역슬레시로 들어가 있는 걸 볼 수 있을 것이다.

이거보고 자칫 “역슬레시(\)는 인식을 못하나?”하고 역슬레시를 슬레시(/)로 바꾸고 컴파일 해볼 수도 있을텐데 이러면 컴파일에 성공한다. 근데 이건 원인을 반만 이해한 거다.

원인은 자바가 \를 윈도우 경로에 사용되는 경로 구분자로 인식하지 않고 이스케이프 문자(escape character)라는 표식으로 인식하기 때문이다.

결론은 \ 대신 \\를 쓰면 정상적으로 인식한다는 건데 이스케이프 문자에 대해 간단하게 짚고 넘어가면 바로 이해가 되니 10초만 투자하자.

이스케이프 문자

이스케이프 문자가 뭐냐면 자바가 일부 문자를 인식하는 방식이다. 예를 들어

String word = "문자열 입니다"

이 문자열안에 ‘문자열’ 이라는 단어에 작은 따옴표를 주고 싶으면

String word = "'문자열' 입니다"

라고 쓰고 싶겠지만 이렇게 하면 에러다.

String word = "\'문자열\' 입니다"

라고 이스케이프 문자를 써줘야 아 이게 작은 따옴표를 쓰려고 하는 거구나 하고 컴파일을 문제 없이 해준다.

쓰다보니 길어졌는데 자바에서 윈도우 경로를 역슬레시로 표현하려면

String path = "C:\\Windows\\System32"

처럼 이스케이프 문자 뒤에 역슬레시를 쓰면 된다.

댓글 남기기