12일차 수업 ( 파일읽기,쓰기, 객체직렬화 )  

 

1. 파일읽기
=> 파일읽기시 사용 가능한 클래스

가. FileInputStream
 => 바이너리 데이터 ( 이미지파일, 텍스트파일등 )

나. FileReader
 => 텍스트 데이터

==> File 클래스를 이용해서 읽을 파일을 명시한다.

2. 파일 쓰기
=> 파일쓰기시 사용 가능한 클래스
가. FileOutputStream
 => 바이너리 데이터

나. FileWriter
 => 텍스트 데이터

3. 객체 직렬화 - > 내가 만든 클래스를 유지시키는 방법
 개념 : 객체생성한 클래스의 인스턴스 heap 메모리에 저장되는데, 이것은 휘발성이다.
 따라서 지속적으로 사용하기 위해서 파일로 저장하거나 네트워크를 통해 전송시킬수가 있는데
 아무 클래스나 가능한것이 아니고 반드시 '직렬화객체'만이 가능하다.
 이것을 가능하게 하는 작업을 '객체직렬화'라고 한다.

직렬화객체 생성방법
 : implements Serializable ( java.io.Serializable ) 을 한 클래스를
   '직렬화 객체' 라고 한다.

 

 

<예제 이미지 파일 복사>

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

 

public class FileReadWriteTest {

 public static void main(String[] args) {

  // c:\\Temp\\a.jpg 파일을 읽어서
  // c:\\Temp\\b.jpg 로 출력하기
  File f = new File("c:\\Temp\\a.jpg");
  File f2 = new File("c:\\Temp\\b.jpg");
  int size = (int) f.length();
  byte[] b = new byte[size]; // 1kbyte
  FileInputStream fis = null;
  FileOutputStream fos = null;
  try {
   fis = new FileInputStream(f);
   fos = new FileOutputStream(f2);
   try {
    int n = fis.read(b);
   } catch (IOException e) {

    e.printStackTrace();
   }
   try {
    fos.write(b);
   } catch (IOException e) {

    e.printStackTrace();
   }

  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } finally {
   try {
    if (fis != null)
     fis.close();
    if (fos != null)
     fos.close();
   } catch (IOException e) {

    e.printStackTrace();
   }
  }
 }
}

 

====수업 내용======

 

1. 파일읽기
=> 파일읽기시 사용 가능한 클래스

가. FileInputStream
 => 바이너리 데이터 ( 이미지파일, 텍스트파일등 )

나. FileReader
 => 텍스트 데이터

==> File 클래스를 이용해서 읽을 파일을 명시한다.

2. 파일 쓰기
=> 파일쓰기시 사용 가능한 클래스
가. FileOutputStream
 => 바이너리 데이터

나. FileWriter
 => 텍스트 데이터

3. 객체 직렬화
 개념 : 객체생성한 클래스의 인스턴스 heap 메모리에 저장되는데, 이것은 휘발성이다.
 따라서 지속적으로 사용하기 위해서 파일로 저장하거나 네트워크를 통해 전송시킬수가 있는데
 아무 클래스나 가능한것이 아니고 반드시 '직렬화객체'만이 가능하다.
 이것을 가능하게 하는 작업을 '객체직렬화'라고 한다. 

직렬화객체 생성방법
 : implements Serializable ( java.io.Serializable ) 을 한 클래스를
   '직렬화 객체' 라고 한다. 

 

********** 정리
가. 키보드 입력 ( 표준 입력 )
나. 모니터 출력 ( 표준 출력 )
다. 텍스트 파일 읽기
라. 텍스트 파일 쓰기
마. 바이너리 파일 읽기, 쓰기 ( 이미지 복사한것 )
바. 객체 직렬화


4. NIO ( New IO )

 : 이후에 나온 기술.

 가. Path 클래스
    ==> 파일 및 디렉토리 경로 관련

 나. Files 클래스
    ==> 파일과 관련 클래스( java.io.File 보다 향상 )


 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,