자바에있는 System 클래스에 대한 간단한 예제를 몇가지 살펴 보겠습니다. 이 System 클래스는 유용한 필드들을 포함하고 있는데, 표준입력, 표준출력, 표준에러 스트림입니다. System 클래스는 final 로 선언되어 있어서 클래스를 인스턴스화 할 수 없습니다.
또한 System 클래스는 많은 수의 메소드들을 포함하고 있으며 그것들을 이용하여 외부에서 정의된 프로퍼티들이나 환경변수, 파일들과 라이브러리들을 읽거나 할 수 있습니다. 또한 System 클래스는 다른 배열로 배열의 일부를 복사하는 간단한 메소드가 포함되어 있습니다.
System 클래스는 JDK 1.0 부터 포함되어 있었습니다.
System 필드들
- 표준 입력 스트림
- 표준 출력 스트림
- 표준 오류 스트림
- 참조 : 위의 세가지 스트림들은 이미 열려 있으며 데이터에 접근할 준비가 되어있습니다.
Read line example
package kr.co.leehana.example.system; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ReadLineExample { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); // 표준 입력 스트림으로부터 라인을 읽습니다. String inputLine = reader.readLine(); StringBuilder builder = new StringBuilder(inputLine); builder.reverse(); // 입력된 라인을 역으로 정렬 System.out.println("Input string : " + inputLine); System.out.println("Reversed string : " + builder.toString()); System.err.println("Reversed string : " + builder.toString()); reader.close(); // 열려 있는 스트림 닫기 } }
위의 예제에서 우리는 표준 입력 스트림으로 부터 완료된 라인을 읽을것 입니다. 그리고 읽어 들인 라인을 역으로 정렬(reversed)하여 표준 출력과 표준 오류 스트림을 이용하여 쓰는 것을 보여줍니다. 예제가 실행 되고 나면 아래와 같은 결과가 출력 됩니다.
Input string : Hello from Java Code Geeks! Reversed string : !skeeG edoC avaJ morf olloH Reversed string : !skeeG edoC avaJ morf olloH
Array copy
System 클래스는 현재 배열의 일부를 다른 배열로 복사 할 수 있는 메소드를 제공합니다. 그 메소드의 정의는 다음과 같습니다.
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
각각의 인자들
- src : 원본 배열
- srcPos : 원본 배열에서 복사가 시작 될 위치
- dest : 복사의 대상이 될 배열
- destPos : 복사의 대상이 될 배열에 복사를 할 위치
- length : 복사가 될 요소의 갯수
예제를 보겠습니다.
package kr.co.leehana.example.system; public class ArrayCopyExample { private final static int TOTAL_ELEMENTS = 10; public static void main(String[] args) { int[] src = new int[TOTAL_ELEMENTS]; for (int i = 0; i < TOTAL_ELEMENTS; i++) src[i] = i + 1; System.out.print("Source array : "); for (int i = 0; i < TOTAL_ELEMENTS; i++) System.out.print(src[i] + " "); System.out.println(); int destSize = src.length / 2; int[] dest = new int[destSize]; System.arraycopy(src, 0, dest, 0, destSize); System.out.print("Destination array : "); for (int i = 0; i < destSize; i++) System.out.print(dest[i] + " "); System.out.println(); } }
위 예제에서 우리는 원본 배열의 절반을 대상 배열에 복사를 하였습니다. 예제를 실행하면 아래와 같은 결과 출력 됩니다.
Source array : 1 2 3 4 5 6 7 8 9 10 Destination array : 1 2 3 4 5
System Properties
System 클래스는 private 인스턴스로 Properties 클래스를 포함하고 있으며, 현재 동작중인 환경에 대한 구성을 제공합니다.
- 참조 : 중요한 시스템 프로퍼티들은 여기에서 확인 해볼수 있습니다.
아래의 예제를 통해 몇가지 시스템 프로퍼티들을 콘솔에 출력 해보겠습니다.
package kr.co.leehana.example.system; public class SystemPropertiesExample { public static void main(String[] args) { // 현재 시스템의 자바 버전을 출력합니다. System.out.println("Java version: " + System.getProperty("java.version")); // 현재 시스템의 OS 버전을 확인 합니다. System.out.println("OS version: " + System.getProperty("os.version")); // 현재 유저의 홈디렉토리를 출력 합니다. System.out .println("Home directory: " + System.getProperty("user.home")); } }
예제를 실행하면 아래와 같은 출력을 볼 수 있으며, 이 출력된 내용은 플랫폼에 따라 달라질 수 있습니다.
Java version: 1.6.0_65 OS version: 10.9.5 Home directory: /Users/voyaging
Environmental variables (환경 변수들)
또한 System 클래스는 환경변수를 읽을 수 있는 getenv() 메소드를 제공하며, 모든 환경 변수를 Map 클래스로 반환합니다.
예제를 통해 확인 해보겠습니다.
package kr.co.leehana.example.system; import java.util.Map; public class EnvironmentalVariablesExample { public static void main(String[] args) { Map<String, String> vars = System.getenv(); // 모든 환경 변수를 출력합니다. for (String key : vars.keySet()) System.out.println("Key: " + key + ", Value: " + vars.get(key)); } }
예제를 실행하면 아래와 같은 출력을 볼 수 있으며, 이 출력된 내용은 플랫폼에 따라 달라질 수 있습니다.
Key: APP_ICON_20159, Value: ../Resources/sts.icns Key: SHELL, Value: /bin/bash Key: TMPDIR, Value: /var/folders/6p/cx6thx5n3wj7p_698lk7jy_w0000gn/T/ Key: com.apple.java.jvmMode, Value: client (중략) Key: JAVA_MAIN_CLASS_22572, Value: kr.co.leehana.example.system.EnvironmentalVariablesExample
Current Time (현재시간)
System 클래스는 간단한 currentTimeMillis() 메소드를 제공하고 있으며, 현재의 시간을 밀리세컨드로 반환합니다. 이 메소드에 의해 반환되는 값은 현재 시간에서 1970년 1월 1일 자정 UTC 의 시간을 뺀 값입니다.
예제는 아래와 같습니다.
package kr.co.leehana.example.system; public class CurrentTimeMillisExample { public static void main(String[] args) { System.out.println("The current time in milliseconds : " + System.currentTimeMillis()); } }
예제
출처
'공부 > java' 카테고리의 다른 글
Java BufferedInputStream 예제 (0) | 2014.09.23 |
---|---|
Java List remove object 예제 (0) | 2014.09.23 |
Java BufferedOutputStream 예제 (0) | 2014.09.22 |
Java BufferedWriter 예제 (0) | 2014.09.06 |
Java List 를 배열로 변환 하는 예제 (0) | 2014.09.05 |