리눅스의 경로 구분자는 /
윈도우는 \
(백슬레시 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=====");
}
}
결과)
System.out.println("Hello,\nworld!"); Hello, world!
System.out.println("Hello,\rworld!"); world!
System.out.println("Hello,\b\b\bworld!"); Helworld!
System.out.println("Hello,\tworld!"); Hello, world!
System.out.println("Hello,\fworld"); Hello, world!
System.out.println('\''); '
System.out.println("Hello,\"w\"orld!"); Hello,"w"orld!
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는 타자기에서 유래된 단어이다.
타자기로 문서를 작성할 때 한 줄에 글자를 다 입력했으면 아래 줄로 이동시켜줘야한다.
아래 줄로 이동 하는 것이 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(CR)을 나타내는 문자이다. LF는 ASCII코드로 10, CR은 13이다.
이 ^M은 Unix/Linux시스템에서 CRLF(\r\n)을 받을 때 CR이 해석이 안되어서 생긴 문자이다!
자바에서는 운영체제별로 갖고있는 구분자를 제공해준다.
구분자 변수 자체를 사용하여 유동적인 프로그램 제작이 가능하게 할 수 있다.
이 구분자는 기본으로 제공되는 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;