입출력 스트림(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 |