본문 바로가기
Java/기초

[java 기초] 입출력 스트림과 파일 입출력

by Meaning_ 2021. 7. 5.
728x90
반응형

<스트림 입출력>

 

버퍼를 가지고 순차적으로 이루어지는 입출력 

 

<자바의 입출력 스트림>

 

= 응용프로그램과 입출력 장치를 연결하는 소프트웨어 모듈

 

입력 스트림: 입력장치로부터 자바프로그램으로 데이터 전달

출력 스트림:출력 장치로 데이터 출력 

 

- 스트림의 양 끝에 입출력 장치와 자바 응용프로그램 연결

 

- 스트림은 단방향 (입출력을 동시에 하는 스트림 없음)

 

- 입출력 스트림 기본단위

  바이트 스트림: 바이트

  문자 스트림:문자 (자바에서는 문자 1개:2바이트)

 

- 선입선출 구조 

 

<자바의 입출력 스트림 종류>

 

- 바이트 스트림: 입출력되는 데이터를 단순 바이트로 처리

                     ex. 바이너리 파일을 읽는 입력 스트림

- 문자 스트림: 문자만 입출력하는 스트림, 문자가 아닌 바이너리 데이터는 스트림에서 처리하지 못함

                    ex. 텍스트 파일을 읽는 입력 스트림

 

 

InputStreamReader rd=new InputStreamReader(System.in);//System.in 바이트 입력 스트림

int c= rd.read(); //문자 입력 스트림(rd)

 

 

<문자 스트림>

 

- 유니코드(2바이트) 문자를 입출력하는 스트림

- 문자로 표현하지 않는 데이터는 다루지 못함

- 이미지,동영상과 같은 바이너리 데이터는 입출력 불가

 

<문자 스트림을 다루는 클래스>

 

- Reader/Writer

- InputStreamReader/OutputStreamWriter

 

 

<문자 집합과 InputStreamReader를 이용한 텍스트 파일읽기>

 

FileInputStream fin=new FileInputStream("c:\\Temp\\hangul.txt");

InputStreamReader in=new InputStreamReader(fin,"MS949");//"MS949"는 한글 완성형 확장형 문자집합

 

while((c=in.read()!=-1){

 System.out.print((char)c);

}

 

<FileWriter를 이용한 파일 쓰기>

 

FileWriter fout=new FileWriter("c:\\Temp\\test.txt");

fout.write('A');//문자 'A'출력

fout.close();

 

 

블록 단위 쓰기

 

char[] buf=new char[1024];

 

fout.write(buf,0,buf.length);//buf[]배열의 처음부터 배열크기(1024개 문자) 만큼 쓰기 

 

 

 

<바이트 스트림 클래스>

 

- 바이트 단위의 바이너리 값을 읽고 쓰는 스트림

 

InputStream/OutputStream

 

- 추상 클래스

- 바이트 스트림을 다루는 모든 클래스의 슈퍼 클래스

 

FileInputStream/FileOuputStream

 

- 파일로부터 바이트 단위로 읽거나 저장하는 클래스

- 바이너리 파일의 입출력 용도

 

DataInputStream/DataOutputStream

 

- 자바의 기본 데이터 타입의 값(변수)을 바이너리 값 그대로 입출력

- 문자열도 바이너리 형태로 입출력 

 

<버퍼 입출력 스트림과 버퍼 입출력의 특징>

 

버퍼 스트림

 

- 버퍼를 가진 스트림

- 입출력 데이터를 일시적으로 저장하는 버퍼를 이용하여 입출력 효율 개선

 

버퍼 입출력의 목적

 

- 입출력 시 운영체제 API 호출 횟수를 줄여 입출력 성능 개선

- 출력 시 여러번 출력되는 데이터를 버퍼에 모아두고 한 번에 장치로 출력 

 

<버퍼 스트림의 종류>

 

바이트 버퍼 스트림

 

- 바이트 단위의 바이너리 데이터를 처리하는 버퍼 스트림

- BufferedInputStream 와 BufferedOuputStream

 

문자 버퍼 스트림

 

- 유니코드와 문자 데이터만 처리하는 버퍼 스트림

- BufferedReader와 BufferedWriter

 

<File 클래스>

 

- 파일의 경로명을 다루는 클래스

- java.io.File

- 파일과 디렉터리 경로명의 추상적 표현

- 파일 이름 변경, 삭제, 디렉터리 생성, 크기 등 파일 관리

- File객체는 파일 읽고쓰기 기능 없음

 

 

파일 객체 생성

 

File f= new FIle("c:\\windows\\system.ini");

 

파일의 경로명 

 

String filename=f.getName();//"system.ini"

String path=f.getPath();//"c:\\windows\\system.ini"

String parent=f.getParent();//"c:\\windows"

 

파일인지 디렉터리인지 구분

 

if (f.isFile())

 System.out.println(f.getPath()+"는 파일입니다.");

 else if (f.isDirectory())

  System.out.println(f.getPath()+"는 디렉터리입니다.");

 

 

728x90
반응형

'Java > 기초' 카테고리의 다른 글

[java기초] 업캐스팅과 다운캐스팅  (0) 2021.07.07
[java 기초] 예외처리  (0) 2021.07.06
[java기초] 기본패키지  (0) 2021.07.05
[java 기초] 제네릭과 컬렉션  (0) 2021.07.04
[java기초] 제네릭 프로그래밍  (0) 2021.07.02

댓글