입출력
- 컴퓨터 내부 또는 외부 장치와 프로그램 간의 데이터를 주고 받는 것
- 입출력을 위한 하드웨어 장치 접근에 공통적인 방법으로 스트림을 이용함
- 한쪽 방향으로만 흐른다는 것이 포인트
파일 경로
- 1) 절대 경로: 절대적인 기준점을 기준으로 경로 작성
c:\tools\eclipse
- 2) 상대 경로: 현재 위치를 기준으로 경로 작성(상대 경로 기준은 프로젝트 폴더 내부)
byte/byteTest.txt
스트림(Stream) 클래스
- 입출력 장치에서 데이터를 읽고 쓰기 위해서 자바에서 제공하는 클래스
- 모든 스트림은 단방향이며 각 장치마다 연결할 수 있는 스트림 존재
- 한글 및 한자 등은 2바이트로 바이트 기반 스트림으로 쪼개져서 보내진다.
- 문자가 아닌 사진, 동영상, 파일 등은 바이트 기반 스트림으로 보내진다.
// 문자, 바이트의 입출력 모두 아래 코드와 비슷한 형식의 정형화된 코드로 작성됨 public void byteOutput() { FileOutputStream fos = null; try { fos = new FileOutputStream("byte/byteTest.txt"); for(int i=0; i<content.length(); i++) { char ch = content.charAt(i); fos.write(ch); } System.out.println("바이트 기반 스트림 출력 완료"); catch(FileNotFoundException e) { e.printStackTrace(); }catch(IOException e) { e.printStackTrace(); }finally { try { if(fos != null) fos.close(); }catch (IOException e) { e.printStackTrace(); } }
스트림 클래스 종류
- 1) InputStream:
바이트 기반 입력 스트림의 최상위 클래스
2) OutputStream:
바이트 기반 출력 스트림의 최상위 클래스
3) FileInputStream:
파일을 바이트 단위로 읽을 때 사용
4) FileOutputStream:
파일을 바이트 단위로 저장할 때 사용
5) Reader:
문자 기반 입력 스트림의 최상위 클래스
6) Writer:
문자 기반 출력 스트림의 최상위 클래스
7) FileReader:
문자 단위로 텍스트 기반 파일을 읽을 떄 사용
8) FileWriter:
문자 단위로 텍스트 기반 파일을 저장할 때 사용
보조 스트림
- 스트림의 기능을 향상시키거나 새로운 기능을 추가하기 위해 사용
- 보조 스트림은 실제 데이터를 주고 받는 스트림이 아니기 때문에 입출력 처리 불가능
- 기반 스트림을 먼저 생성한 후 이를 이용하여 보조 스트림 생성
FileInputStream fis = new FileInputStream("sample.txt"); //기반 스트림 생성 BufferedInputStream bis = new BufferedInputStream(fis); //보조 스트림 생성 bis.read(); //보조 스트림으로부터 데이터 읽어옴
- 직렬화와 역직렬화
File 클래스
- 파일 시스템의 파일을 표현하는 클래스
- 파일 크기, 파일 속성, 파일 이름 등의 정보와 파일 생성 및 삭제 기능 제공
File file = new File("C:dev/test.txt"); // 파일 경로