입출력 스트림 (IO Stream)
1. 데이터를 전송하기 위한 일종의 통로 개념이다.
2. 일방통행이 기본이다.
3. 입력 스트림과 출력 스트림으로 구분한다.
4. 바이트 기반 스트림과 문자 기반 스트림으로 구분한다.
5. 바이트 기반 스트림
1) InputStream : 입력 스트림
(1) FileInputStream
(2) PipedInputStream
2) OutputStream : 출력 스트림
(1) FileOutputStream
(2) PipedOutputStream
6. 문자 기반 스트림
1) Reader : 입력 스트림
(1) FileInputReader
(2) PipedInputReader
2) Writer : 출력 스트림
(1) FileWriter
(2) PipedWriter
7. 보조 스트림
1) BufferedInputStream : 버퍼를 통해서 입력
2) BufferedOutputStream : 버퍼를 통해서 출력
Ex01_FileOutput
package com.mywork.ex;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Ex01_FileOutput {
public static void main(String[] args){
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
fos = new FileOutputStream("alphabet.txt");
bos = new BufferedOutputStream(fos);
char ch = 'A';
while(true) {
bos.write(ch);
if(ch == 'z') break;
ch++;
}
System.out.println("alphabet.txt 파일 생성");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(bos!= null) bos.close();
if(fos!= null) fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
package com.mywork.ex;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Ex02_FileInput {
public static void main(String[] args) {
FileInputStream fis= null;
BufferedInputStream bis= null;
try {
fis = new FileInputStream("alphabet.txt");
bis = new BufferedInputStream(fis);
int ch = 0;
while(true) {
ch = bis.read();
if(ch == -1) break;
System.out.print((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(bis != null) bis.close();
if(fis != null) fis.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}
Ex03_FileCopy
package com.mywork.ex;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Ex03_FileCopy {
public static void main(String[] args) throws IOException{
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("alphabet.txt"));
FileOutputStream fos = new FileOutputStream("alphabet2.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
int data;
while( (data = bis.read()) != -1) {
bos.write(data);
}
bis.close();
bos.close();
fos.close();
}
}
Ex04_File
package com.mywork.ex;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class Ex04_File {
public static void main(String[] args) {
File file = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
file = new File("myFile.txt");
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
char ch = 'a';
while(true) {
bos.write(ch);
if(ch == 'z') break;
ch++;
}
System.out.println("파일명 : " + file.getName());
System.out.println("경로1 : " + file.getAbsolutePath());
System.out.println("경로1 : " + file.getPath());
if(file.exists()) {
System.out.println("파일이 있습니다.");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(bos != null) bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}