목록자바 복습 (26)
판봉 개발 일기
File 클래스 java.io 패키지에서 제공하는 File 클래스는 파일 및 폴더(디렉토리) 정보를 제공해주는 역할을 합니다. 객체 생성 방법은 다음과 같습니다. File file = new file("C:/Temp/file.txt"); File file = new File("C:\\Temp\\file.txt"); 참고로 윈도우의 경로 구분자는 /,\둘다 사용가능하며 유닉스나 리눅스는 /를 사용합니다. 그리고 윈도우에서 \를 경로 구분자로 사용하려면 이스케이프 문자인(\\)로 기술해야합니다. -> 2개 File 객체를 생성했다고 해서 파일이나 폴더가 생기진 않습니다. 또한 파일과 폴더가 없어도 예외가 발생하지 않습니다. 여부를 알아보려면 객체 생성 뒤 exists()메소드를 호출해야 합니다. 파일및폴더 ..
Scanner 클래스 Scanner 클래스는 입출력 스트림도 아니며, 보조 스트림도 아닙니다. Scanner는 문자 파일이나 바이트 기반 입력 스트림에서 라인 단위 문자열을 쉽게 읽도록 하기위하여 java.util 패키지에서 제공하는 클래스입니다. 전의 글에는 여러가지 보조 스트림을 연결하는 작업이 필요했다면 Scanner는 보조 스트림 없이 라인 단위 문자열을 쉽게 읽을수 있습니다. 즉, nextLine() 메소드를 제공합니다. 다음은 위와 관련된 코드입니다. public class Product { private int pno; private String name; private int price; private int stock; public int getPno() { return pno;} pub..
콘솔은 시스템을 사용하기 위하여 키보드로 입력을 받고 모니터로 출력하는 소프트웨어입니다. 참고로 자바는 콘솔로부터 데이터를 입력받을때 System.in을 사용하며,반대로 출력할 경우엔 System.out을 사용합니다. 에러를 출력할땐 System.err를 사용합니다. System. in 필드 자바는 System 클래스의 in 정적 필드를 제공합니다. 또한 System.in은 InputStream 타입의 필드이므로 다음과 같이 InputStream 변수로 참조가 가능합니다. InputStream is = System.in; 또한 키보드로부터 무슨 키가 입력이 되었는지 확인하려면 InputStream의 read()메소드로 1byte를 읽으면 됩니다. 리턴된 int의 값엔 해당 키의 코드가 저장이 되어져있습니..
ObjectOutputStream과 ObjectInputStream 보조 스트림을 연결하면 메모리에 생성된 객체를 파일 또는 네트워크로 출력할 수 있습니다. ObjectOutputStream은 객체를 직렬화하며, ObjectInputStream은 객체로 역직렬화하는 역할을 합니다. ※직렬화란? 객체를 바이트 배열로 만드는 것을 말합니다. 역질렬화는 바이트 배열을 다시 객체로 복원하는 것을 말합니다. ObjectInputStream과 ObjectOutputStream은 다른 보조 스트림과 마찬가지로 연결할 바이트 기반 입출력 스트림을 생성자의 매개값으로 받게됩니다. ObjectInputStream ois = new ObjectInputStream(바이트 기반 입력 스트림); OjbectOutputStrea..
PrintStream과 PrintWriter는 프린터와 유사하게 출력하는 print(), println()메소드를 가지고 있는 보조 스트림입니다. ※System.out이 바로 PrintStream타입이어서 여태까지 쉽게 써왔습니다. PrintStream은 바이트 기반 출력, PrintWriter는 문자기반 출력 스트림과 연결됩니다. 다음은 생성하는 방법입니다. PrintStream ps = new PrintStream(바이트 기반 출력 스트림); PrintWriter pw = new PrintWriter(문자 기반 출력 스트림); println()메소드는 데이터 끝에 개행 문자인 '\n'을 추가하며, print() 메소드는 '\n'을 추가하지 않습니다. ★개행 문자는 줄 바꿈이 일어나게 합니다. 다음은 ..
DataInputStream과 DataOutputStream 보조 스트림을 연결하면 기본 타입을 입출력할 수 있습니다. 다음은 둘 객체를 생성하는 코드입니다. DataInputStream dis = new DataInputStream(바이트 기반 입력 스트림); DataOutputStream dos = new DataOutputStream(바이트 기반 출력 스트림); 다음은 기본 타입을 출력하기위한 메소드입니다. DataInputStream DataOutputStream boolean readBoolean() void writeBoolean(boolean v) byte readByte() void writeByte(int v) char reardChar() void writeChar(int v) doub..
프로그램의 실행 성능은 입출력이 가장 늦은 장치를 따라간다고 합니다 이건 몰랐는데 CPU나 메모리가 아무리 좋고 비싼걸 써도 하드 디스크의 입출력이 늦어지면 그만큼 실행이 하드 디스크의 처리속도에 맞춰진다고 합니다. ※내가 비싸게 샀던 CPU는 뭐가 되는거지...! 하지만 이 증상은 프로그램과 중간에 메모리 버퍼(buffer)와 작업하면 실행 성능을 향상 시킬 수가 있습니다. 버퍼는 데이터가 쌓이기를 기다렸다가 다 차면 데이터를 한번에 하드 디스크로 보냅니다. 그래서 출력 횟수가 줄어 드는 것입니다. ※살짝 어릴적에 뿌요뿌요 할때 한번에 모아서 보낼때 느낌이 떠올랐습니다.. 기본적으로 출력 스트림은 내부에 작은 버퍼를 가지고 있지만은 너무나도 충분하지 않습니다. 그래서 보조 스트림 중에는 메모리 버퍼를 ..
소스 스트림이 바이트 기반 스트림(ex-InputStream, OutputStream, FileInputStream, FileOutputStream)이면서 입출력 데이터가 만약에 문자라면 앞장에서 살펴본 것과 같이 Reader와 Writer로 변환해서 사용할 수 있습니다. 왜냐하면 문자 입출력은 Reader와 Writer가 편리하기 때문입니다. OutputStreamWriter OutputStreamWriter은 바이트 기반 출력 스트림에 연결되고 문자 출력 스트림인 Writer로 변환보조하는 스트림입니다. Writer writer = new OutputStreamWriter(바이트 기반 출력 스트림); 파일 출력을 위한 바이트 기반 스트림은 다음처럼 바꿀수있습니다. FileOutputStream fos..
보조 스트림이란 다른 스트림과 연결이 되어 여러 가지 편리한 기능을 제공하는 스트림이라고 이해하면 됩니다. 보조 스트림은 자체적으로 입출력을 수행할 수 없어서 메인스트림과 같은 것들에 연결해서 입출력을 합니다. 대표적인 기능으로는 문자 변환, 입출력 성능 향상, 기본 타입 입출력이 존재하고 있습니다. 또한 프로그램은 입력 스트림이 아닌 보조 스트림에서 제공하는 기능을 써서 데이터를 읽습니다. 반대도 마찬가지입니다.(출력 스트림) 다음은 보조 스트림을 생성하는 방법입니다. 보조스트림 변수 = new 보조스트림(연결할 스트림) InputStreamReader에 연결하는 코드는 다음과 같습니다. InputStream is = ...; InputStreamReader reader = new InputStream..
Reader는 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스입니다. 다음 표에는 Reader 클래스의 주요 메소드를 보여줍니다. 리턴 타입 메소드 설명 int read() 1개의 문자를 읽고 리턴 int read(char[] cbuf) 읽은 문자들을 매개값으로 주어진 문자 배열에 저장하고 읽은 문자수를 리턴 int read(char[] cbuf, int off, int len) len개의 문자를 읽고 매개값으로 주어진 문자 배열에서 cbuf[off]부터 len개까지 저장합니다. 그리고 읽은 문자 수를 리턴 void close() 입력 스트림을 닫음 read()메소드 read() 메소드는 입력 스트림으로 부터 1개의 문자(2byte)를 읽고 int(4byte)타입으로 리턴합니다. 즉, 끝에 있는 2..