다음과 같이 OS마다 파일 패스에서 사용하는 파일 구분자가 다릅니다. Windows에서는 \를 구분자로 사용하지만 Linux는 /를 구분자로 사용합니다.
Windows : "C:\Windows\System32\drivers\e"
Linux : "/home/account/Desktop"
이런 구분자를 사용하면, 2개 이상의 OS에서 동작하는 프로그램의 경우 문제가 될 수 있습니다.
프로그램이 실행되는 OS에 맞는 Separator를 동적으로 가져와 사용하도록 구현이 되어야 합니다.
File.separator
File.separator는 프로그램이 실행 중인 OS에 해당하는 구분자를 리턴합니다.
File file = new File("/tmp/" + File.separator + "text.txt");
System.out.println(file.toPath());
Output:
/tmp/text.txt
System.getProperty("file.separator")
System.getProperty("file.separator")는 프로그램이 실행 중인 OS에 해당하는 구분자를 리턴합니다.
String separator = System.getProperty("file.separator");
File file = new File("/tmp/" + separator + "text.txt");
System.out.println(file.toPath());
Output:
/tmp/text.txt
References
File.java
/**
* The system-dependent default name-separator character, represented as a
* string for convenience. This string contains a single character, namely
* <code>{@link #separatorChar}</code>.
*/
public static final String separator = "" + separatorChar;
'Program > JAVA' 카테고리의 다른 글
[JAVA] 생성자 (0) | 2020.03.02 |
---|---|
[JAVA] Servlet :: Servlet(서블릿) 이란? (0) | 2016.12.07 |
[JAVA]객체와 인스턴스의 차이점 (0) | 2016.03.08 |
[JAVA]클래스(Class), 객체(Object), 인스턴스(Instance), 생성자(Constructor) (0) | 2016.03.08 |
[JAVA] 재귀 기초 - Factorial (0) | 2015.11.30 |