-
[JAVA] 입출력 스트림/파일 입출력/FileReader/FileWriterLanguages/Java 2021. 4. 23. 18:34반응형
스트림
스트림 입출력
버퍼를 가지고 순차적으로 이루어지는 입출력
자바의 입출력 스트림
응용 프로그램과 입출력 장치를 연결하는 소프트웨어 모듈
입력 스트림 : 입력 장치로부터 자바 프로그램으로
출력 스트림 : 출력 장치로 데이터 출력
자바의 입출력 스트림 특징
스트림의 양끝에 입출력장치와 자바 응용프로그램
스트림은 단방향
입력과 출력을 동시에 하는 스트림은 없음
입출력 스트림 기본 단위
바이트 스트림의 경우 : 바이트
문자 스트림의 경우 : 문자(자바에서는 문자1개 : 2바이트)
선입선출 구조(FIFO구조)
스트림은 연결될 수 있다.
자바의 입출력 스트림 종류
바이트 스트림과 문자 스트림
바이트 스트림
입출력되는 데이터를 단순 바이트로 처리
ex)바이너리 파일을 읽는 입력 스트림
문자 스트림
문자만 입출력하는 스트림
문자가 아닌 바이너리 데이터는 스트림에서 처리 하지 못한다
ex)텍스트 파일을 읽는 입력 스트림
JDK는 입출력 스트림을 구현한 다양한 클래스 제공
문자 스트림
유니 코드(2바이트)문자를 입출력 하는 스트림
문자로 표현되지 않는 데이터는 다루지 못함
이미지,동영상과 같은 바이너리 데이터는 입출력
문자 스트림을 다루는 클래스
Reader/Writer
InputStreamReader/OutputStreamWriter
FileReader/FileWriter
BufferedReader/BufferdWriter
텍스트 파일에서 문자 데이터 입출력
문자 중심의 입출력 클래스
클래스 Reader와 Writer
문자 중심의 입출력을 담당하는 추상 클래스
클래스 Reader의 주요 메소드
클래스 Writer의 주요 메소드
FileReader을 이용한 파일 일기
문자 스트림의 파일 입력 스트림 생성
파일전체를 읽어 화면에 출력하는 코드 샘플
Reader fin = new FileReader("c:\\test.txt" /* C:\\test.txt 파일을 열고 파일과 입력 바이트 스트림 객체 fin 연결 */ int c; while((c = fin.read()) != -1) //파일 끝까지 바이트씩 c에 읽어 들임 파일의 끝을 만나면 read()는 -1 리턴 System.out.println((char)c);//바이트 c를 문자로 변환하여 화면에 출력 } fin.close(); /*스트림을 닫음. 파일도 닫힘 스트림과 파일의 연결을 끊음 더이상 스트림으로부터 읽을 수 없음*/
FileReader로 텍스트 파일 읽기
try/catch구문 사용하여 오류 최소화
FileReader 코드를 이용하여 텍스트 파일 읽기
package project4; import java.io.*; public class FileReaderEx { public static void main(String[] args) { FileReader fin = null; try { fin = new FileReader("c:\\windows\\system.ini"); int c; while((c = fin.read()) != -1) { System.out.print((char)c); } fin.close(); } catch(IOException e) { System.out.println("입출력 오류"); } } }
FileWriter 사용 예
c:\Temp\test.txt로의 문자출력
FileWriter fout = new FileWriter("c:\\Temp\\test.txt");
파일 쓰기
문자 단위 쓰기
FileWriter fout = new FileWriter("c:\\Temp\\test.txt"); fout.write('A'); // 문자 'A' 출력 fout.close();
블록 단위 쓰기
char [] buf = new char[1024]; // buf[] 배열의 처음부처 배열 크기(1024개의 문자)만큼 쓰기 fout.write(buf,0,buf.length);
키보드 입력을 파일로 저장하기
package project4; import java.io.*; import java.util.*; public class FileWriterEx { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); FileWriter fout = null; int c; try { fout = new FileWriter("c:\\test.txt"); while(true) { String line = scanner.nextLine(); if(line.length() == 0) break; fout.write(line,0,line.length()); fout.write("\r\n,0,2"); //한 줄 띄기 위해 \r\n을 파일에 저장 } fout.close(); }catch(IOException e) { System.out.println("입출력 오류"); } scanner.close(); } }
반응형'Languages > Java' 카테고리의 다른 글
[JAVA] 자바의 GUI/awt/swing/컨테이너와컴포넌트/스윙프레임만들기/관리자 대표 유형 4가지/FlowLayout/BorderLayout/ ... (0) 2021.04.24 [JAVA] 바이트 스트림/버퍼스트림/File 클래스/바이트스트림과버퍼스트림 속도차이를 보여주는 예제/파일 복사 예제 (0) 2021.04.23 [java] object 클래스/toString()/래퍼 클래스/스트링/math클래스/Calendar 클래스 (0) 2021.04.23 [JAVA]java 인터페이스/인터페이스 구현과 형 변환/인터페이스와 다형성/인터페이스 상속 (0) 2021.03.08 [JAVA]java 추상 클래스/템플렛 매서드 (1) 2021.03.01