[Java]입출력/IO(1)__개발공부 27일차
입출력이란?
자바 입출력(Input / Output == IO)
컴퓨터 내/외부의 장치 + 프로그램간에 데이터 주고 받는것이다.
예) 키보드 장치 -> 프로그램(Ex05.java) -> 콘솔창
데이터 받기 데이터 주기
입력 출력
Stream
자바의 모든 입출력은 스트림(Stream)이라는 개념으로 이루어진다.
스트림(Stream)
ㄱ.빨대 == 스트림 객체 물(데이터)을 입으로 마시기 위한 통로,수단(Stream)
ㄴ. 단방향 이기에 방향을 기준으로 2가지 종류가 있다.
- 읽기(입력용) 스트림
- 쓰기(출력용) 스트림
ㄷ. 스트림의 사전적 의미 : 흐르는 물
Stream의 종류
자바의 스트림은 2가지 종류 구분(대상) ****
ㄱ.문자(텍스트) 스트림
-읽기(입력용) 스트림 : 최상위 부모클래스 Reader
-쓰기(출력용) 스트림 : Writer
-유니코드 2바이트 == 1문자 단위 == 2바이트 (16비트)
-한 문자, 문자열, 문자배열
예) XXXReader, XXXWriter
BufferedReader, InputStreamReader, FileReader, FileWriter
new FileReader("a.txt") : a.txt 파일을 문자로 읽게하는 문자 읽기 스트림 2바이트(1문자) 단위로 읽기위한 문자 스트림
ㄴ.바이트 스트림
-읽기(입력용) 스트림 : InputStream
-쓰기(출력용) 스트림 : OutputStream
-1바이트(8비트)
컴퓨터 처리과정에서 바이트보다 int로 처리된다. 그래서 int(정수)형으로 표현한다.
하지만 크기가 1바이트 이므로 크기는 1바이트 공간만 쓰여진다.
-바이트, 바이트배열, 정수(int)[ ][ ][ ][00001111]
예)XXXInputStream, XXXOutputStream
FileInputStream, FileOutputStream
보조스트림
보조스트림 - 어떤 스트림을 사용하기(IO) 더 쉽도록 보조해 주는 스트림
예) BufferedReader는 여기서 보조스트림이다.
문자 보조 읽기용도의 스트림이다.
BufferedReader br = new BuferedReader(new FileReader("a.txt"))
br.readLine(); 한 라인 단위로 처리가 쉽게 만든다.
하위 폴더/파일 읽는법
파일/폴더 삭제
폴더를 삭제하고자 할때 폴더내에 다른 하위폴더 (ex : aaa bbb)가 있다면 폴더가 삭제되지 않는다.
이런경우에는 재귀함수를 사용해서 메서드를 하나 만들어서 사용해야한다.
파일/폴더 이름 변경 방법
exe 파일의 복사
exe 파일은 텍스트 스트림이 아니라 바이트 스트림으로 읽어야한다.
2바이트씩 읽다가는 파일이 깨질수도 있기때문이다.
flush()/close()
***매우 중요***
flush( ) : 스트림 객체에 저장된 놈을 실제 파일에 저장하고 스트림(빨대)은 비우자 라는 메서드이다.
close( ) : 선 flush가 된 후에 파일을 닫기 작업 하는 것이다.
*참고
현재 사용자 경로 얻는법
프로젝트 명까지 출력된다.
String curentDirectory = System.getProperty("user.dir");