Java System 클래스 의 ID 지원

5724 단어 System
System 클래스 에 세 개의 상수 가 존재 합 니 다:
No
상수
묘사 하 다.
1
public static finnal PrintStream out
표준 출력 을 표시 합 니 다. 출력 위 치 는 모니터 입 니 다.
2
public static final PrintStream err
오류
3
public static final InputStream in
키보드 입력
System.out
System. out 은 PrintStream 의 인 스 턴 스 입 니 다. 자주 사용 하 는 방법 은 화면 에 정 보 를 인쇄 하 는 것 입 니 다. 물론 System. out 을 사용 하면 직접 OutputStream 을 예화 할 수 있 습 니 다.
package org.systemiddemo;

import java.io.IOException;
import java.io.OutputStream;

public class SystemIoDemo01 {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        OutputStream output = System.out; //             
        String str = "Hello"; 
        output.write(str.getBytes()); //    
        output.close(); 
   }

}

System.err
System. err 는 잘못된 출력 을 표시 합 니 다.
package org.systemiddemo;

public class SystemIoDemo02 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			Integer.parseInt("hello");
		}catch(Exception e){
			System.out.println(e);
			System.err.println(e);
		}
	}

}

코드 자체 에서 아무런 문제 가 관찰 되 지 않 고 eclipse 에서 만 빨간색 글꼴 이 나타 납 니 다.실제로 상기 두 상수 에 대해 구별 하려 면 개념 적 으로 만 말 할 수 있다.
System. out 의 일반적인 정 보 는 사용자 에 게 보 여 주 려 고 합 니 다.
System. err 의 일반적인 정 보 는 사용자 에 게 보 여주 고 싶 지 않 습 니 다.
System.in
System. in 은 실제 적 으로 키보드 의 입력 을 표시 합 니 다. 이 조작 을 사용 하면 키보드 가 데 이 터 를 입력 하 는 기능 을 완성 할 수 있 습 니 다.
package org.systemiddemo;

import java.io.IOException;
import java.io.InputStream;

public class SystemIoDemo03 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		InputStream input = System.in; //        
		System.out.print("    :"); 
		byte b[] = new byte[20]; //        
		int len input.read(b); //    
		System.out.println("    :"+new String(b,0,len));
	}

}

이 때 키보드 입력 기능 이 구현 되 었 으 나 이 프로그램 은 사용 시 길이 제한 이 있 습 니 다.그리고 중국 어 를 입력 할 때 도 문제 가 발생 할 수 있 습 니 다. 그러면 이 때 는 다른 방식 으로 크기 를 지정 하지 않 고 읽 으 면서 끝 날 지 여 부 를 판단 할 수 있 습 니 다.
package org.systemiddemo;

import java.io.IOException;
import java.io.InputStream;

public class SystemIoDemo04 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		InputStream input = System.in; //        
		System.out.print("   ");
		int temp = 0 ; //    
		StringBuffer str = new StringBuffer();
		while ((temp = input.read()) != -1){
			char c = (char)temp; //  
			if (c == '
'){ // break; // } str.append(c); } System.out.print(str.toString()); } }

이 때 데 이 터 를 읽 을 때 길이 제한 이 없습니다.
하지만 중국 어 를 입력 할 때 제대로 읽 을 수 없습니다. 한 바이트 씩 읽 을 때마다 전체 로 읽 어야 하기 때문에 더 좋 은 읽 기 동작 을 수행 하려 면 다음 버 프 레 드 리더 클래스 만 사용 할 수 있 습 니 다.
출력
System. out, System. err 는 모두 고정된 출력 목표 가 있 습 니 다. 아니, 모두 화면 입 니 다.
System. in 은 고정된 입력 목표 가 있 습 니 다. 모두 키보드 입 니 다.
그러나 System 클래스 에서 일련의 입 출력 방향 을 바 꾸 는 방법 을 제공 하여 System. out, System. err, System. in 의 입 출력 위 치 를 바 꿀 수 있 습 니 다.
System. out 재 설정: public static void setOut (PrintStream out)
System. err 리 셋: public static void setErr (PrintStream err)
System. in 리 셋: public static void setIn (InputStream in)
범례: 출력 재 설정 검증
package org.systemiddemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;

public class SystemIoDemo05 {

	/**
	 * @param args
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args) throws FileNotFoundException {
		// TODO Auto-generated method stub
		File file = new File("D:"+File.separator+"demo.txt");
		System.setOut(new PrintStream(new FileOutputStream(file)));
		System.out.println("    ");
       }

}

알림:
이전에 System. err 는 사용자 가 보고 싶 지 않다 고 말 한 적 이 있 으 며, System. out 은 사용자 가 보고 싶 어 하기 때문에 개발 에 서 는 System. err 의 출력 위 치 를 바 꾸 는 것 을 권장 하지 않 고 System. out 의 출력 위치 만 바 꾸 는 것 을 권장 합 니 다.
package org.systemiddemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

public class SystemIoDemo06 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File file = new File("D:"+File.separator+"demo.txt");
		System.setErr(new PrintStream(new FileOutputStream(file)));
		try{
			Integer.parseInt("hello");
		}catch(Exception e){
			System.err.println("  ");
		}
	}

}

범례: 입력 재 설정
package org.systemiddemo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SystemIoDemo07 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File file  = new File("D:"+File.separator+"demo.txt");
		System.setIn(new FileInputStream(file));
		InputStream input  = System.in;
		byte[] b = new byte[20]; //        
		int len = 0;
		len = input.read(b); //    
		System.out.println(new String(b,0,len));
	}
}

일반 System. in 의 동작 은 가지 않 는 것 이 좋 습 니 다.

좋은 웹페이지 즐겨찾기