InputStream 클래스는 모든 파일 시스템으로부터 스트림의 한 바이트를 읽는다
int available(): 스레드가 대기하고 있는 상태에서 사용할 수 있는 바이트 반환, 실행을 중단하지 않고 입력 스트림에서 읽을 수 있는 바이트의 수를 리턴합니다. InputStream의 available 메소드는 0을 리턴합니다. 이 메소드는 서브클래스로 대체(override)되어야 합니다.
void close(): 입력 스트림을 닫는다.
synchronized void mark(int i): 입력 스트림 상의 위치를 표시한다.
public abstract int read(): 한 문자를 읽고 반환. 이때 스트림 끝은 -1
int read(byte b[]): 바이트 배열을 읽는다.
int read(byte b[], int off, int len): 배열 b의 off 위치에서 len 바이트 읽는다.
sychronized void reset(): 마지막 표시를 반환하고, 계속 read()로 바이트를 읽을 수 있다.(mark 위치로 돌아감)
void long skip(long i): 입력 스트림에서 n 바이트를 건너뛴다.
public boolean markSupported() : 입력 스트림이 mark 및 reset 메소드를 지원하는지 여부를 테스트합니다
System.in.read()는 표준 입출력 스트림으로부터 요구된 자료가 주어질 때까지 실행을 대기하고 있다가 리턴키가 전송될 때 비로소 진행한다. 읽는 단위는 ASCII의 8비트 문자단위이다.
// 읽은 문자를 정수(int)로 취급하는 경우
import java.io.*;
public class TestFile{
public static void main (String args[]) throws IOException {
StringBuffer buf=new StringBuffer();
int i;
while ((i=System.in.read())!=-1)// -1은 eof에 해당하는 코드
buf.append((char)i); // ctrl+z은 -1에 해당한다.
System.out.println();
System.out.print(buf.toString());//StringBuffer를 string으로 변환
}
}
//system.in.read()를 char로 형변환
import java.io.*;
public class TestFile1{
public static void main (String args[]) throws IOException {
StringBuffer buf=new StringBuffer();
char c;
while ((c=(char)System.in.read())!='\n')
buf.append(c);
// 여기서는 ctrl+z이 필요없다. 왜냐면 문자로 읽기 때문이다.
System.out.print(buf.toString()); //StringBuffer를 string으로 변환
}
}
------------------------------
BufferedInputStream – 예제
------------------------------
import java.io.*;
public class BufferedStatement {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream(args[0]);
BufferedInputStream bis = new BufferedInputStream(fis);
System.out.println("Stream 되돌리기 기능......"+bis.markSupported());
bis.mark(1024); //마킹을 해둔곳으로부터 1024 Byte 읽기전까지는 마킹이 유효
for(int i=0;i<10;i++) {
System.out.write(bis.read());
}
bis.reset();
System.out.println("\n reset() 호출");
for(int i=0; i< 20; i++) {
System.out.write(bis.read());
}
}
}
댓글 없음:
댓글 쓰기