학습 키워드
- 바이트 기반 스트림
- 문자 기반 스트림
- 파일 클래스
InputStream, OutputStream
>의미 및 특징
: 입력과 출력을 다루기 위한 스트림
: 단방향으로 데이터를 전송하는 스트림
: 스트림의 대상(데이터 송수신의 대상)이 누구냐에 따라 다른 입출력 스트림을 사용해야한다.
바이트 기반 스트림
>의미 및 특징
: 입출력 단위가 byte.
>FileInputStream
: 데이터의 대상이 File인 입력 스트림
: File로부터 데이터를 입력받는 스트림
: File을 읽을 수 있음
: 해당 File은 IDE의 Workspace에 존재해야한다
import java.io.FileInputStream;
public class ExampleInput{
public static void main(String args[])
{
try {
FileInputStream fileInput = new FileInputStream("readNewFile.txt");
int i = 0; // i 변수 초기화
while ((i = fileInput.read()) != -1) {
//i=fileInput.readm() 로 대체
//fileInput.read()
//: next byte를 검사하는 메서드
//: 다음 byte가 존재하면 0~255의 int를 반환함
//: 다음 byte가 없으면 -1을 반환함
System.out.print((char)i); //next byte의 내용을 출력
}
fileInput.close();//해당 stream 종료
}
catch (Exception e) {
System.out.println(e);
}
}
}
/*
조건
1: readNewFile.txt 파일 존재
2: readNewFile.txt 파일의 내용 >> code
코드 결과(콘솔 출력)
code
*/
>FileOutputStream
: 데이터의 대상이 File인 출력 스트림
: File에 데이터를 출력하는 스트림
: File을 생성 및 File의 내용을 입력할 수 있음
: 해당 File은 IDE의 Workspace에 존재해야한다
import java.io.FileOutputStream;
public class ExampleOutput{
public static void main(String args[]) {
try {
//인스턴스 생성(파일 생성...?)
FileOutputStream fileOutput = new FileOutputStream("createNewFile.txt");
String word = "code"; //word 초기화
byte[] b = word.getBytes(); //word를 byte[]로 만듬
fileOutput.write(b); //byte[]을 받아 하나씩 파일에 출력
fileOutput.close(); //FileOutputStream 종료
}
catch (Exception e) {
System.out.println(e);
}
}
}
/*
코드 결과(파일 생성)
1. createNewFile.txt 생성
2. createNewFile.txt 에 code 출력
*/
문자(char) 기반 스트림
>의미 및 특징
: 입출력 단위가 char.
: Java의 char는 2byte기 때문에 문자 기반 스트림을 사용함.
: InputStream(byte 기반) -> Reader(char 기반)
: OutputStream(byte 기반) -> Writer(char 기반)
>FileReader
: 데이터의 대상이 File인 입력 스트림
: File로부터 데이터를 입력받는 스트림
: File을 읽을 수 있음
: 해당 File은 IDE의 Workspace에 존재해야한다
public class ExampleInput {
public static void main(String args[]) {
try {
String fileName = "ReadNewFile.txt";
FileReader file = new FileReader(fileName);
int data = 0;
while((data=file.read()) != -1) {
System.out.print((char)data);
}
file.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
>FileWriter
: 데이터의 대상이 File인 출력 스트림
: File에 데이터를 출력하는 스트림
: File을 생성 및 File의 내용을 입력할 수 있음
: 해당 File은 IDE의 Workspace에 존재해야한다
public class ExampleOutput{
public static void main(String args[]) {
try {
String fileName = "makeNewFile.txt";
FileWriter writer = new FileWriter(fileName);
String str = "written!";
writer.write(str);
writer.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
File
>의미 및 특징
: 파일과 디엙토리에 접근할 수 있는 클래스
: 생성자의 인자로 디렉토리 경로와 파일명.확장자를 제공한다.
: createNewFile() 메서드로 파일을 생성할 수 있다.
>공식 문서
'코드스테이츠_국비교육 > [Section1]' 카테고리의 다른 글
20_기술 면접 연습, 미니 잡 서칭_22.09.19 (0) | 2022.09.19 |
---|---|
19.01_스레드_22.09.16 (0) | 2022.09.17 |
18.05_애너테이션_22.09.15 (0) | 2022.09.17 |
18.04_메서드 레퍼런스_22.09.15 (0) | 2022.09.17 |
18.03_스트림 메서드_22.09.15 (0) | 2022.09.17 |