
바이트 단위 엽력을 처리하기 위한 기본 클래스.
FileInputStream, ByteArrayInputStream 같은 서브클래스들이 특정 입력 소스로부터 데이터를 읽어온다.
바이트 단위 출력을 처리하기 위한 기본 클래스.
FilteOutputStream, ByteArrayOutputStream 같은 서브 클래스들이 특정 출력 대상을 처리
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteExam1 {
public static void main(String[] args) {
FileInputStream fis=null; // null로 초기화
FileOutputStream fos=null; // null로 초기화
try {
// 읽을 파일 경로
fis=new FileInputStream("ByteExam1.java");
// 작성 할 파일 경로
fos=new FileOutputStream("Byte.txt");
int readData;
while((readData= fis.read()) != -1){ // fis.read()는 끝에 도달하면 -1을 반환하며 1바이트씩 읽음
fos.write(readData); // 1바이트씩 작성
}
}
catch (IOException e){
System.out.println(e.getMessage());
}finally {
try {
fos.close(); // 리소스 해제
}catch (IOException e){
System.out.println(e.getMessage());
}
}
}
}

data.txt의 내용을 그대로 읽어서 copy.txt로 복사하려고 합니다. 12번째 줄 부터 fis와 fos를 이용해서 코드를 완성해 보세요.
import java.io.*;
public class ByteReadWriteExam{
public static void main(String[] args){
FileInputStream fis = null;
FileOutputStream fos = null;
try{
fis = new FileInputStream("data.txt");
fos = new FileOutputStream("copy.txt");
int readData=-1;
while((readData=fis.read())!=-1){
fos.write(readData);
}
}
catch(Exception e){
System.out.println(e);
}
finally{
//fis와 fos를 사용하고 나면 close해야 합니다.
try{
fis.close();
fos.close();
}
catch(Exception e){
System.out.println(e);
}
}
}
}

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ByteExam1 {
public static void main(String[] args) {
FileInputStream fis=null;
FileOutputStream fos=null;
try {
fis=new FileInputStream("ByteExam1.java");
fos=new FileOutputStream("copy.txt");
byte[] b=new byte[512];
int readData=-1;
while((readData=fis.read(b))!=-1){
fos.write(b,0,readData);
}
}catch (IOException e){
System.out.println(e.getMessage());
}finally {
try {
fos.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
}
기존의 1바이트씩 읽고 쓰는게 아닌 생성한 b의 크기(512 바이트)씩 읽고 씀