본문 바로가기

전체 글

(73)
05. 파일 복사 응용프로그램 작성 파일 입출력 스트림의 응용으로 파일을 복사하는 프로그램 작성에 대해 소개합니다. 파일은 문자들로 이루어진 텍스트 파일과 이미지나 오디오 혹은 그래픽 등 바이너리 코드로 이루어진 바이너리 파일로 나뉜다. 바이너리 파일은 바이트 스트림으로 읽고 써야 정확하게 복사가 이루어진다. 그러나 텍스트 파일은 문자 스트림이나 바이트 스트림 둘 다 사용해도 복사에 문제가 없다. 텍스트 파일 복사 문자 스트림을 이용하여 텍스트 파일을 복사한다. FileReader를 이용하여 text 파일을 읽고, FileWriter로 텍스트 파일에 복사한다. 파일 경로명은 File 객체를 이용한다. 이미지 파일이나 워드, ppt, hwp 파일 등은 복사할 수 없다. 바이너리 파일 복사 바이트 스트림을 이용하여 바이너리 파일을 복사한다. ..
04. File 클래스 File클래스가 뭔데요? File 클래스는 파일이나 디렉터리에 대해, 경로명, 파일크기, 파일타입, 파일수정날짜 등 파일에 관한 속성 정보를 제공하고, 파일삭제, 디렉터리 생성, 파일이름 변경, 디렉터리 내의 파일 리스트 제공 등 파일 관리 작업을 지원한다. File클래스에는 파일 입출력 기능은 없으며, FileInput/OutputStream, FileReader/Writer 등 파일 입출력 클래스를 이용해야 한다. File 객체 생성 File 객체는 생성자를 이용하여 생성한다. File f = new File ("c:\\temp\\test.txt"); File 객체는 다음과 같이 스트림 생성 시 생성자에 파일 경로명을 전달하기 위해 이용된다. FileReader fr = new FileReader(f..
03. 바이트 스트림과 바이너리 파일 입출력 바이트 스트림은 바이트 단위의 바이너리 데이터가 흐르는 스트림이다. 이미지나 동영상 파일을 읽고 쓰기 위해서는 반드시 바이트 스트림을 이용해야 한다. 바이너리 파일 입출력을 위한 대표적인 스트림 클래스는 FileInputStream/ FileOutputStream 이다. 바이너리 파일 쓰기 프로그램 내의 변수나 배열에 들어 있는 바이너리 값을 그대로 파일에 저장할 필요가 있다. 예를 들면 이미지 버퍼를 그대로 이미지 파일에 기록하는 경우이다. 변수의 바이너리 값이 기록된 바이너리 파일은 사람이 읽고 쉽게 해석할 수 없다. 변수나 배열을 그대로 c:\temp\test.out 파일에 기록하는 예를 알아보자. - 파일 출력 스트림 생성 : c:\temp\test.out에 바이너리를 기록하는 출력 스트림을 생성..
02. 문자 스트림과 텍스트 파일 입출력 문자 스트림은 문자를 단위로 다루는 스트림으로, 문자가 아닌 바이너리 값들은 제대로 처리하지 못한다. 텍스트 파일은 문자로만 구성된 파일로서, 텍스트 파일을 읽고 쓰기 위해서는문자 입출력 시스템을 사용해야 한다. 문자 스트림 파일 입출력 클래스인 FileReader/FileWriter를 이용해서 텍스트 파일을 읽고 쓰는 방법에 대해서 알아봅시다. 텍스트 파일 읽기 - 파일입력 스트림 생성 ( 파일 열기) : 파일을 읽기 위해, 우선 파일 입력 스트림을 생성하고 파일과 연결한다. FileReader fin = new FileReader("c:\\test.txt"); FileReader의 생성자는 스트림 객체를 생성한 후 c:\test.txt 파일을 찾아 열고, 파일과 스트림을 연결한다. - 파일 읽기 : ..
01. 자바의 입출력 스트림 입출력 스트림이 뭔데? 자바에서 입출력 스트림은 응용프로그램과 입출력장치를 연결하는 소프트웨어 모듈로, 입출력 장치와 응용프로그램 사이에서 데이터가 순서대로 전송되도록 한다. 스트림의 양끝에는 응용프로그램과 장치가 연결되므로, 응용프로그램은 키보드나 스크린에 직접 입출력할 필요 없이, 입출력 스트림 객체를 생성하고 스트림을 통해 쉽게 입출력할 수 있다. 자바에서는 입력스트림과 출력스트림으로 나누어지며, 입출력을 동시에 하는 스트림은 없다. 스트림 입출력의 기본 단위는 바이트이며, 선입선출 방식으로 들어오는 순서대로 전달한다. 바이트 스트림과 문자 스트림 자바에서 입출력 스트림은 문자스트림과 바이트스트림으로 나눈다. 문자스트림은 문자만 다룰 수 있기 때문에 문자가 아닌 데이터가 문자 출력 스트림에 출력되면..
04. 스레드 동기화 스레드 동기화의 필요성 멀티스레드 프로그램이 실행될 때, 다수의 스레드가 공유 데이터를 동시에 접근하는 경우가 발생한다. 특히 다수의 스레드가 동시에 공유 데이터의 값을 변경시키는 경우, 공유 데이터의 값이 정상적으로 변경되지 않는다. 공유 데이터를 동시 접근하는 여러 스레드에 의해 공유 데이터의 값이 비정상적으로 유지되지 않도록 스레드의 실행을 제어하는 기술을 스레드동기화(thread synchronization)라고 부른다. 자바의스레드 동기화에는 2가지 방법이 있다. 1) synchronized로 동기화 블록 지정 2) wait() - notify() 메소드로 스레드 실행 순서 제어 멀티스레드의 동시접근을 순차화하면 출력이 섞이는 문제를 해결할 수 있다. 자바 스레드 동기화를 위한 synchroni..
03. 스레드 종료 스레드의 종료는 스스로 종료하는 경우와 다른 스레드에 의해 강제 종료되는 경우가 있다. 스스로 종료했든 강제 종료되었든 종료된 스레드를 다시 살릴 수는 없다. 원한다면 스레드 객체를 다시 생성하고 start()를 호출하여 스레드를 시작시켜야 한다. 스스로 종료 스레드는 run()메소드가 종료하거나 리턴하는 경우 종료된다. 강제 종료 한 스레드가 다른 스레드를 강제로 종료시키고자 하면, 종료시키고자 하는 스레드 객체의 interrupt() 메소드를 호출하면 된다. main()에 TimerThread 스레드를 생성하고, 강제로 종료시키기 위해서 th.interrupt()를 호출한다. 그 결과 th를 가리키는 TimerThread 스레드에 InterruptedException 예외가 발생한다. TimeThre..
02. 자바 스레드 만들기 자바 스레드를 만드는 방법은 2가지가 있다. 1) Thread 클래스 이용 2) Runnable 인터페이스 이용 Thread 클래스로 스레드 만들기 Thread 클래스의 경로명은 java.lang.Thread이며, Thread 클래스를 상속받아 새로운 스레드 코드를 만든다. Thread 클래스는 스레드를 만들고 유지 관리하기 위해 많은 메소드를 제공한다. Thread() : 스레드 객체 생성 Thread( Runnable target ) : Runnable 객체인 target을 이용하여 스레드객체 생성 Thread( String name ) : 이름이 name인 스레드 객체 생성 Thread( Runnable target, String name ) : Runnable 객체를 이용하며, 이름이 name인 ..