Java System 클래스 상세 설명-in,out,err

3421 단어 자바inSystemouterr
거의 모든 것 이 이 System 류 를 사용 한 적 이 있 습 니 다.왜냐하면 여러분 이 배 운 첫 번 째 문 구 는 아마...

package jdk.lang;

public class SystemInspection {
	public static void main(String[] args) throws Exception {
		System.out.println(“Hello World”);
	}
}

본 고 는 이러한 표준 입력(in),출력(out)과 오류 흐름(err)의 사용 과 원 리 를 상세 하 게 설명 할 것 이다.먼저 더 복잡 한 예 를 보 자.

package jdk.lang;

public class SystemIOE {
	public static void main(String[] args) throws Exception {
		System.out.println("Hello Out");
		System.err.println("Hello Error");
		byte[] b = new byte[1024];
		int count = System.in.read(b);
		System.out.println(new String(b, 0, count));
	}
}

eclipse 에서 실행,출력:
Hello Out
Hello Error
Hello In 
Hello In
분석:
사실 out,in 과 err 는 정적 속성 입 니 다.
public final static InputStream in = nullInputStream();
public final static PrintStream out = nullPrintStream();
public final static PrintStream err = nullPrintStream();

그들 은 사실 private static void initializeSystem Class()에서 초기 화 되 었 습 니 다.
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
	FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
	FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);
	setIn0(new BufferedInputStream(fdIn));
	setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
	setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));

FileDescriptor.out,FileDescriptor.in 과 FileDescriptor.err 는 사실
public static final FileDescriptor in = standardStream(0);
public static final FileDescriptor out = standardStream(1);
public static final FileDescriptor err = standardStream(2);

더 내 려 가면 네 이 티 브 호출 이 야.
또한 System 류 는 in,out,err 를 설정 하 는 방법 도 제공 합 니 다.그러면 로그 시스템 을 실현 할 수 있 습 니 다.다음 코드 실행:

package jdk.lang;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

public class SystemIOE {
	public static void main(String[] args) throws Exception {
		redirect();
		helloIO();
	}

	private static void helloIO() throws IOException {
		System.out.println("Hello Out");
		System.err.println("Hello Error");
		byte[] b = new byte[1024];
		int count = System.in.read(b);
		System.out.println(new String(b, 0, count));
	}

	public static void redirect() throws FileNotFoundException {
		InputStream in = new BufferedInputStream(new FileInputStream(new File(
				"c:/in.txt")));
		System.setIn(in);
		PrintStream out = new PrintStream(new FileOutputStream(new File(
				"c:/out.log")));
		System.setOut(out);
		PrintStream err = new PrintStream(new FileOutputStream(new File(
				"c:/err.log")));
		System.setErr(err);
	}
}


나중에 logback 의 실현 이 이런 종 류 를 사 용 했 는 지 다시 보 겠 습 니 다.계속

좋은 웹페이지 즐겨찾기