파일 복사

  • 입력 스트림을 사용하여 특정파일과 연결하고, 파일의 내용을 읽어 들인 후,
    출력 스트림을 사용하여 생성된 파일에 모든 내용을 내보낸다.
  • 8bit stream을 사용하면 모든 파일 포멧을 복사할 수 있고,
    16bit stream을 사용하면 독자포멧이 없는 txt파일만 복사할 수 있다.

HDD 구조

사용자가 저장하는 파일은 HDD에 섹터별로 분리되어 저장된다.
사용하면 할수록 파일이 쪼개지는 단편화가 진행된다.

HDD는 제조사마다 다르지만, 일반적으로 512byte를 읽어들인다.

  • HDD특성 무시 :
int data = 0;
while((data = fis.read()) != -1){
	//HDD에서 몇 바이트를 읽어들이든 1byte만 사용.
}
  • HDD특성 고려 :
1. 512byte를 읽어들였을 때 저장할 배열을 생성.
byte[] data = new byte[512];

2. HDD에 읽어들인 크기대로 배열에 저장
int dataSize = 0;//읽어들인 크기 저장
while((dataSize = fis.read(data)) != -1){
	//1. HDD에서 한번에 읽어온 값을 비어있는 배열에 저장.
	//2. 읽어들인 데이터의 크기를 변수에 저장
}

기본형 데이터 형을 읽어들이거나 내보낼 때 사용하는 스트림.

DataInputStream, DataOutputStream 제공


instance를 읽어들이거나, 내보낼 때 사용하는 스트림

  • ObjectInputStream, ObjectOutputStream이 제공.
  • 기본형 데이터 형은 Stream을 타고 나갈 수 있지만, 객체(instance)는 Stream을 타고 나갈 수 없다. => 객체는 크기를 알 수 없다.
  • marshal stream.
  • 8bit stream => 한번에 데이터를 8bit씩 보내는 스트림.
  • 참조형 데이터 형이 stream을 타고 나갈려면 객체가 일정크기로 쪼개져야하는데, 크기를 알 수 없기 때문에 몇 개로 쪼개져야할지 알 수 없다.
  • 객체는 중요한 값을 가지고 있을 수도 있기 때문에 JVM외부로 나가는 것을 막아놨다.
  • 기본형 데이터형이 JVM외부로 나가는 것을 막기위해 transient접근지정자를 제공.

instance of 연산자

객체가 클래스로부터 생성되었는지 비교하는 연산자.

문법

객체 instanceof 클래스명


NIO (Non-blocking I/O)

비동기적인 입출력 제공하는 클래스
기존의 I/O보다 효율적인 다중 연결과 대용량 데이터처리를 할 때 사용.
N-I/O의 핵심 구성 요소는 channel(입출력 소스)과 buffer(데이터를 임시로 저장하는데 사용)가 있다.

  • 비동기성(Asynchronous) : 입출력 작업이 완료될 때 까지 기다리지 않고 다른 작업을 수행.
  • non-blocking : 입출력 작업이 블로킹되지 않고, 다른 작업을 수행하다가 입출력이 가능한 상태가 되면, 해당 작업을 수행.
  • 채널을 통해서 입출력이 일어나고, 데이터는 버퍼를 통해서 전송.(속도 빠름)

대용량 텍스트파일 읽기

java.nio.files패키지의 Files클래스를 사용.

1. 내용을 읽어 들일 파일을 선택
java.nio.files.Path = Paths.get("경로");

2. 해당 파일의 모든 줄을 읽어 들인다.
List<String> lines = Files.readAllLines(path);
반복
for (String lines = Files.)

N-I/O를 사용한 파일 복사

  1. 원본 파일
    Path orifinal = Paths.get("원본파일명");
    //of method도 추가

  2. 복사할 파일
    Path copy = Paths.get("복사 파일명");

  3. 복사
    try{
    Files.copy(original, copy, 옵션);//StandardCopyOption.REPLACE_EXISTING : 파일이 있다면 덮어씀.
    }catch(IOException ie){
    }


Network Programming

C/S( Client / Server ) Programming(통신 프로그램)
java.net 패키지에서 관련 클래스들을 제공
network : 서로 다른 컴퓨터를 연결하기 위한 데이터 통신망.

0개의 댓글