본문 바로가기

공부일지

231030 (Java)

입출력 스트림(IO)

  • 스트림 : 자바의 데이터는 스트림을 통해 입출력 된다. 프로그램이 데이터의 출발지인지, 도착지인지 여부에 따라 사용하는 스트림의 종류가 결정된다.
  • 데이터 입출력에 필요한 API
  • system.in/out : 콘솔 - 프로그램을 이어준다.

API

  • Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말
  • 사용 설명서대로 사용해야 한다.

입출력 스트림의 예시

  • Scanner sc = new Scanner(system.in) : keyboard를 통해 정보를 받아온다.
    • System.in : 가장 먼저 연결되는 스트림, 외부에서 들어오는 데이터를 받는다.

InputStream 클래스

  • InputStream in = new System.in: 등으로 초기화할 수 있다.
  • 입력받은 데이터를 byte 단위로 저장한다.
  • cr(carriage return) : 커서를 줄 맨 앞으로 이동시킨다.(13)
  • lf(line feed) : 커서를 한 줄 아래로 이동시킴
  • 입력 종료시 -1을 반환한다.(cr, lf 모두 반환 후 적용)
  • 바이트 단위 저장이기 때문에 한글을 표현할 수 없다.

InputStreamReader 클래스

  • new InputStreamReader(System.in) 을 이용하여 초기화 할 수 있다.
  • 2바이트 이상의 문자데이터를 받을 수 있다.

input 테스트

  • 나의 이니셜 scanner 메소드 구현하기
    • string을 반환하는 메소드
    • enterkey 입력(cr, lf) 제외한 문자열을 반환
  • 콘솔에 입력한 값을 그대로 반환하면 성공
import java.io.IOException;
import java.io.InputStreamReader;

public class Ex04_InputKORMulti {
	public static void main(String[] args) throws IOException {
		Ex04_InputKORMulti cd = new Ex04_InputKORMulti();
		System.out.println(cd.cd());
	}
	public String cd() throws IOException {
		InputStreamReader isr = new InputStreamReader(System.in);
		int temp;
		String str = "";
		while((temp=isr.read())!=13) {
			str += (char)temp;
		}
		return str;
	}
}

 

bufferreader

  • 여러 글자 출력은 buffer를 이용한다.
  • 한번에 모아서 처리하기 때문에 처리속도가 빠르다.
  • 1024바이트를 한번에 처리한다.

output

  • 출력은 스트림 버퍼에 저장되고, flush를 사용하여 강제로 출력하게 한다.

파일 시스템

  • getResource로 요소를, getPath로 경로를 가져올 수 있다.
String path =Ex01_File.class.getResource("").getPath();
		System.out.println(path);
  • file.exists : 파일의 경로가 존재하는지 체크하는 메소드.
  • mkdir : make directory, 경로 생성이라는 메소드. 폴더를 생성한다.
  • file의 상대경로는 워크스페이스를 기준으로 계산하게 된다.
  • file을 생성하는 경우
    • 텍스트 파일을 쓰는 경우
    • DB가 끊겨서 오류가 날 경우. 업로드 해야 하는 데이터를 텍스트나 로그로 남겨둔다. csv
  • 파일을 만드는 것은 프로그램 밖으로 보내는 행위이기 때문에 output, flush가 필요하다.
  • writer를 new로 생성할 경우 txt의 형태로 저장된다.
  • file은 directory, writer로 txt를 생성하도록 분리하는 것이 좋다.
  • file.createNewFile()로 새 파일을 생성할 수 있다.
  • write.write는 텍스트 내부의 값을 덮어씌운다.
  • write.append를 이용하여 내부 값을 유지하고 이어서 쓸 수 있다.
  • FileWriter(파일, true)일 경우 write를 append처럼 쓸 수 있다.

이미지의 입력

  • fileinputstream에 file을 넣을 경우 사용할 수 있다.
  • file.read를 사용하면 rgb에 해당하는 값을 반환한다.

컬렉션 프레임워크

  • 컬렉션 자료 구조 : List, Set, Map
  • 배열의 불편함을 해결하기 위해 제공되는 컬렉션 프레임워크.
  • ArrayList : 크기가 변하는 배열의 표준
  • li.tostring()으로 배열 출력, li.add()로 값 할당, li.size로 크기 출력, li.get()으로 해당 순번의 값 출력

'공부일지' 카테고리의 다른 글

231101 (JDBC)  (0) 2023.11.01
231031 (Oracle)  (0) 2023.10.31
231030 (Oracle)  (0) 2023.10.30
231026 (Java)  (0) 2023.10.26
231026 (Oracle)  (0) 2023.10.26