Java - 줄바꿈(개행), OS에 맞게 처리하는 방법

String에서 줄바꿈(newline)은 Window에서 \r\n, Linux에서 \n으로 표현됩니다.

하지만 이런 방식은, 서로 다른 종류의 OS에서 동작하는 프로그램에서 문제가 발생할 수 있습니다.

// Windows
System.out.println("Hello\r\nWorld");

// Linux
System.out.println("Hello\nWorld");

System.lineSeparator()

System.lineSeparator()은 프로그램이 실행되는 OS의 개행 문자를 리턴합니다. 따라서, Windows 및 Linux에서 실행 시, 동일한 결과를 출력합니다.

System.out.println("Hello" + System.lineSeparator() + "World");

Output:

Hello
World

System.lineSeparator()는 Java 1.7부터 제공됩니다.

public final class System {
    /**
     * Returns the system-dependent line separator string.  It always
     * returns the same value - the initial value of the {@linkplain
     * #getProperty(String) system property} {@code line.separator}.
     *
     * <p>On UNIX systems, it returns {@code "\n"}; on Microsoft
     * Windows systems it returns {@code "\r\n"}.
     *
     * @return the system-dependent line separator string
     * @since 1.7
     */
    public static String lineSeparator() {
        return lineSeparator;
    }
}

System.getProperty("line.separator")

"line.separator" 프로퍼티도 OS에 맞는 개행 문자를 리턴합니다. 이것을 사용할 수도 있습니다.

String newline = System.getProperty("line.separator");
System.out.println("Hello" + newline + "World");

Output:

Hello
World

String#format()의 %n

String#format()에서 %n은 line separator를 의미합니다.

System.out.print(String.format("%s%n%s", "Hello", "World"));

Output:

Hello
World

References

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha