이스케이프란? - 리눅스와 윈도우 경로(Path), 자바 운영체제 구분자 설명

devdo·2022년 10월 26일
0

Java

목록 보기
51/59
post-thumbnail

리눅스와 윈도우 경로 구분자

리눅스의 경로 구분자는 /
윈도우는 \(백슬레시 or 역슬래시)


예를 들어, 윈도우에서 파일 경로를 지정할때 이런 상황이 많다.

# 리눅스 
cd /c/WebStudy/WebDevelement/SpringBoot/memo-test
# 윈도우
cd c:\WebStudy\WebDevelement\SpringBoot\memo-test

이는 \ 가 하나이스케이프코드로 문자열 \ 라는 의미를 주는 것이다. => 아래 그림 참고~!

윈도우 경로 표시(\\)

c:\\WebStudy\\WebDevelement\\SpringBoot\\memo-test

윈도우에서는 리눅스와 다르게 \n 같은, \백슬레시로 시작하는 이스케이프코드들과 합쳐져 원하지 않는 문자로 탄생하는 경우가 많다. 그래서 조심해야 한다.


이스케이프란?

말 그대로 탈출한다 라는 뜻인데,
다음과 같은 코드들이 있다.

  • 코드 예시
public class Welcome {

    public static void main(String[] args) {
        System.out.println("******************************************************");
        System.out.println("\t\t\tWelcome to shopping Mall\t\t\t");
        System.out.println("\t\t\tWelcome to Book Market!\t\t\t");
        System.out.println("******************************************************");
        System.out.println(
                "1. 고객 정보 확인하기\t\t\t4. 장바구니 항목 추가하기\n" +
                "2. 장바구니 상품 목록 보기\t\t5. 장바구니의 항목 수량 줄이기\n" +
                "3. 장바구니 비우기\t\t\t\t6. 장바구니 항목 삭제하기\n" +
                "7. 영수증 표시하기\t\t\t\t8.종료"
        );
        System.out.println("******************************************************");

        System.out.println("\r\n=====");
    }
}

결과)

그외

  1. Line Feed(LF): \n
    줄바꿈 문자

System.out.println("Hello,\nworld!"); Hello, world!

  1. Carrage Return(CR): \r
    커서를 처음으로 돌리는 문자

System.out.println("Hello,\rworld!"); world!

  1. Backspace: \b
    커서를 뒤로 한 칸 이동시키는 문자

System.out.println("Hello,\b\b\bworld!"); Helworld!

  1. Tab: \t
    탭 공간을 추가시키는 문자

System.out.println("Hello,\tworld!"); Hello, world!

  1. Form Feed: \f
    System.out.println("Hello,\fworld"); Hello, world!
  2. Single Quote: \'
    ’ 문자를 출력시키는 문자

System.out.println('\''); '

  1. Double Quote: \"
    ” 문자를 출력시키는 문자

System.out.println("Hello,\"w\"orld!"); Hello,"w"orld!

  1. Backslash: \
    \ 문자를 출력시키는 문자

System.out.println("c:\\Users\\user\\git"); c:\Users\user\git

✔ 주의
”” 안에서 ‘문자를 적거나 ‘’ 안에서 “ 문자를 적는 경우 이스케이프 문자 없이 그대로 적어주면 된다.

System.out.println("Hello,'w'orld!");
System.out.println('"');
Hello,'w'orld!
"

https://hayeon17kim.github.io/posts/escape-character/


CR, LF란?

CR, LF는 타자기에서 유래된 단어이다.
타자기로 문서를 작성할 때 한 줄에 글자를 다 입력했으면 아래 줄로 이동시켜줘야한다.
아래 줄로 이동 하는 것이 Line Feed(LF)이고, 왼쪽 끝으로 밀어 주는 것이 Carrige Return(CR)이다.

  • CR(Carrige Return)
    Carrige 캐리지
    (타자기 등의 기계에서 다른 부분을 이동시키는 부분)

  • LF(Line Feed)
    Line Feed 라인피드
    모니터의 커서 위치나 프린터의 인쇄 위치를 한 줄 아래로 내리는 일.

CR, LF는 위의 내용과 같이 타자기의 디지털 잔해(?)이며, 컴퓨터 OS별로 다른 줄바꿈 타입을 사용한다.

  • Linux(유닉스 계열)
    리눅스에서는 줄바꿈을 LF가 기본값이다. (\n)

  • Windows
    Windows에서는 줄바꿈을 CRLF이 기본값이다.(\r\n)


^M(Carrige Return) 생성 이유와 제거 방법

^M은 Carrige Return(CR)을 나타내는 문자이다. LF는 ASCII코드로 10, CR은 13이다.
^M은 Unix/Linux시스템에서 CRLF(\r\n)을 받을 때 CR이 해석이 안되어서 생긴 문자이다!


자바 운영체제 구분자 File.separator

자바에서는 운영체제별로 갖고있는 구분자를 제공해준다.
구분자 변수 자체를 사용하여 유동적인 프로그램 제작이 가능하게 할 수 있다.

이 구분자는 기본으로 제공되는 System 클래스에 들어있다. 아래와 같이 접근한다.

System.getProperty("path.separator");  //패스 구분자
System.getProperty("file.separator"); //파일 구분자.

OR

아니면 아예 File 객체에 속성으로 File.separator을 사용하면 된다!

private final static String UPLOAD_DIRECTORY = "upload";
....
String path = request.getSession().getServletContext().getRealPath("resources");
// C:\WebStudy\Study\ebrainSoft\board_mybatis\src\main\webapp\resources
String root = path + File.separator + UPLOAD_DIRECTORY;

profile
배운 것을 기록합니다.

0개의 댓글