PowerPoint Presentation

Similar documents
<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

파일로출력하는작업순서 1. 파일을연다. 2. 파일로자료를쓴다. 3. 파일을닫는다. 파일입출력에사용되는클래스들. FileInputStream, FileOutputStream, FileReader, FileWriter 문자단위로입출력하기 사람이읽을수있는문자로만구성된파일을읽

PowerPoint Presentation

Cluster management software

PowerPoint Presentation

Network Programming

PowerPoint Presentation

PowerPoint Presentation

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint Presentation

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 09. 예외처리

09-Java Input Output

PowerPoint Presentation

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

PowerPoint 프레젠테이션

슬라이드 1

JAVA PROGRAMMING 실습 08.다형성

제11장 자바 입출력

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint Presentation

Design Issues

Microsoft PowerPoint - 2강

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

PowerPoint Presentation

PowerPoint Presentation

제11장 프로세스와 쓰레드

Cluster management software

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

슬라이드 1

자바입출력구조 자바입출력 파일 기본입출력 필터입출력 문자입출력 비순차접근파일 객체입출력 파일입출력 바이트배열입출력 파이프입출력 연결형입력 스트링버퍼입력 스트림 ( 순차접근 ) 자바입출력구조

Microsoft PowerPoint - 03-TCP Programming.ppt

PowerPoint Presentation

TEST BANK & SOLUTION

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

설계란 무엇인가?

PowerPoint 프레젠테이션

쉽게

PowerPoint 프레젠테이션

gnu-lee-oop-kor-lec06-3-chap7

Java ...

4장.문장

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

12-file.key

02 C h a p t e r Java

PowerPoint Presentation

제11장 자바 입출력

자바-11장N'1-502

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - lec7_package [호환 모드]

java.lang 패키지 java.util 패키지 java.io 패키지 콜렉션 2

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint Presentation

Microsoft PowerPoint - java1-lecture9.ppt [호환 모드]

Network Programming

adfasdfasfdasfasfadf

Microsoft PowerPoint - CSharp-10-예외처리

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Part 11 예외및입출력 1

PowerPoint 프레젠테이션

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

Java

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

Microsoft PowerPoint - Lect04.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - lec2.ppt

목차 INDEX JSON? - JSON 개요 - JSONObject - JSONArray 서울시공공데이터 API 살펴보기 - 요청인자살펴보기 - Result Code - 출력값 HttpClient - HttpHelper 클래스작성 - JSONParser 클래스작성 공공

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

chap 5: Trees

API 매뉴얼

PowerPoint 프레젠테이션

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

[ 정보 ] 과학고 R&E 결과보고서 Monte Carlo Method 를이용한 고교배정시뮬레이션 연구기간 : ~ 연구책임자 : 강대욱 ( 전남대전자컴퓨터공학부 ) 지도교사 : 최미경 ( 전남과학고정보 컴퓨터과 ) 참여학생 : 박진명 ( 전

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

PowerPoint 프레젠테이션

금오공대 컴퓨터공학전공 강의자료

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

JVM 메모리구조

Transcription:

public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum + " 입니다 "); 1

학습목표 자바시스템에서의입출력개요를학습한다. 파일, 디렉터리와연관된클래스를학습한다. 문자스트림과바이트스트림개요에관해학습한다. 문자스트림관련클래스에관해학습한다. 문자스트림을통하여파일에입출력하는방법을학습한다. 바이트스트림관련클래스에관해학습한다. 바이트스트림을통하여파일에입출력하는방법과객체를입출력하는방법에관해학습한다. 2

목차 section 1 java.io 패키지개요 section 2 파일과디렉터리 section 3 문자 (Chraracter) 스트림과바이트 (Byte) 스트림 section 4 문자스트림 - 4-1 Writer 클래스와 Reader 클래스 - 4-2 FileWriter 클래스와 FileReader 클래스 section 5 바이트스트림 - 5-1 OutputStream 클래스와 InputStream 클래스 - 5-2 FileOutputStream 클래스와 FileInputStream 클래스 - 5-3 DataOutputStream 클래스와 DataInputStream 클래스 - 5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 3

1 java.io 패키지개요 입출력기능 - 프로그램에서사용된데이터를영구적으로저장하여후에다른프로그램에서사용하게하기위해필요한기능 - 프로그램에서생성된데이터를파일형태로컴퓨터의하드디스크나보조기억장치에저장한다음다른프로그램에서이데이터를읽어사용하는기능 스트림 - 순서가있는일련의데이터를의미하는추상적인개념 4

1 java.io 패키지개요 스트림을통한입출력의예 395 page 5

2 파일과디렉터리 File 클래스 - 자바는입출력을위해필요한파일과디렉터리를다루기위해 File 클래스를제공 File 클래스의생성자 형식 File(String directorypath) File(String directorypath, String filename) File(File dirobj, String filename) File f1 = new File("/"); File f2 = new File("/", "autoexec.bat"); File f3 = new File(f1, "autoexec.bat"); 파일의경로만가진객체경로명과파일이름을가진객체경로명을가진 File 객체와파일이름을가진객체 6

2 파일과디렉터리 File 클래스의주요메소드 메소드 설명 boolean() boolean canwrite() boolean delete() boolean equals(object obj) String getabsolutepath() String getcanonicalpath() String getparent() String getname() String getpath() boolean isabsolute() boolean isdirectory() 파일이읽기가능하면 true, 아니면 false 를반환 파일이쓰기가능하면 true, 아니면 false 를반환 파일을삭제하고 true를반환, 파일을삭제할수없으면 false를반환현재의객체와 obj로지정된객체가같은파일을가지고있으면 true, 아니면 false를반환 파일에대한절대경로를반환 파일에대한정규경로를반환 부모디렉터리이름을반환 파일의이름을반환 파일의경로를반환 경로가절대경로이면 true, 아니면 false 를반환 현재의객체가디렉터리이면 true, 아니면 false 를반환 7

2 파일과디렉터리 File 클래스의주요메소드 boolean isfile() 메소드 설명 현재의객체가파일이면 true, 아니면 false 를반환 long lastmodified() 1970 년 1 월 1 일 (GMT) 부터파일이마지막으로수정된날짜까지의시간을밀리초로반환 long length() 파일의바이트수를반환 String[] list() boolean mkdir() boolean mkdirs() boolean renameto(file newname) 지정된디렉터리에있는파일과디렉터리를문자열배열로반환 디렉터리를생성. 경로로지정된모든부모디렉터리가존재하여야한다. 지정한디렉터리가생성되면 true를반환하고, 아니면 false를반환디렉터리를생성. 경로로지정된디렉터리가존재하지않으면생성한다음지정한디렉터리를생성. 디렉터리가생성되면 true를아니면 false를반환 파일이나디렉터리의이름을 newname 으로변경한다음 true 를반환. 이름을변경하지못하면 false 를반환 8

2 파일과디렉터리 실습예제 FileDirTest1.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 import java.io.file; public class FileDirTest1 { public static void main(string args[]) { String directory = "C:/Windows"; File f1 = new File(directory); if (f1.isdirectory()) { System.out.println(" 검색디렉터리 " + directory); System.out.println("============================="); String s[] = f1.list(); for (int i=0; i < s.length; i++) { File f = new File(directory + "/" + s[i]); if (f.isdirectory()) System.out.println(s[i] + " : 디렉터리 "); else System.out.println(s[i] + " : 파일 "); C:/Windows 를경로로 File 객체생성 디렉터리에있는모든요소를문자열배열로생성 디렉터리인지, 파일인지를판별 각요소를 File 객체로생성 9

2 파일과디렉터리 실습예제 FileDirTest1.java 18 19 20 21 22 else System.out.println (" 지정한 " + directory + " 는디렉터리가아님 "); 프로그램설명 - 05 : C:/Windows 디렉터리를가지고 File 객체를생성한다. - 09 : list() 메소드는현재 File 객체가가지고있는디렉터리의모든요소 ( 디렉터리또는파일 ) 들을 String 객체의배열로반환하는메소드이다. - 11 : C:/Windows 디렉터리에있는각요소들을가지고 File 객체를생성한다. - 12 : 각요소에대해디렉터리인지를검사하여출력한다. 10

2 파일과디렉터리 11

2 파일과디렉터리 실습예제 FileDirTest2.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 import java.io.file; public class FileDirTest2 { public static void main(string args[]) { File f1 = new File("C:/log.txt"); C:/log.txt 로 File 객체생성 System.out.println(" 파일이름 : " + f1.getname()); System.out.println(" 파일경로 : " + f1.getpath()); System.out.println(" 절대경로 : " + f1.getabsolutepath()); System.out.println(f1.exists()? " 파일존재 " : " 파일없음 "); System.out.println(f1.canWrite()? " 수정가능 " : " 수정불가능 "); System.out.println(f1.canRead()? " 읽기가능 " : " 읽기불가능 "); System.out.println(f1.isDirectory()? " 디렉터리 " : " 디렉터리아님 "); System.out.println(f1.isFile()? " 파일 " : " 파일아님 "); System.out.println(f1.isAbsolute()? " 절대경로 " : " 상대경로 "); System.out.println ("1970년 1월 1일부터파일이마지막수정된날짜까지의밀리초 : " + f1.lastmodifed()); System.out.println(" 파일의크기 : " + f1.length() + " Bytes"); 파일의이름을출력 12

2 파일과디렉터리 프로그램설명 - 04 : C:/log.txt 로 File 객체를생성하였다. - 05~17 : File 클래스의다양한메소드를사용하고있다. lastmodified() 메소드는파일이마지막으로수정된날짜를밀리초로반환한다. 반환된밀리초는 1970년 1월 1일부터파일이마지막으로수정된날짜까지의밀리초이다. 13

3 문자 (Chraracter) 스트림과바이트 (Byte) 스트림 문자스트림 - 16 비트문자나문자열들을읽고쓰기위한스트림 - 입출력을위해서는 Reader, Writer 클래스와그하위클래스를이용 바이트스트림 ( 또는바이너리스트림 ) - 8 비트의바이트를읽고쓰기위한스트림 - 입출력을위해서는 InputStream, OutputStream 클래스와그하위클래스를이용 14

4 문자스트림 문자스트림과연관된클래스 403 page 15

4 문자스트림 4-1 Writer 클래스와 Reader 클래스 Writer 클래스 - 문자스트림의출력기능을제공 Reader 클래스 - 문자스트림의입력기능을제공 16

4 문자스트림 4-1 Writer 클래스와 Reader 클래스 Writer 클래스의주요메소드 메소드 설명 void close( ) 출력스트림을닫는다. void flush( ) void write(int c) void write(char buffer[ ]) void write(char buffer[ ], int index, int size) void write(string s) void write(string s, int index, int size) 출력버퍼에저장된모든데이터를출력장치로전송 c 의하위 16 비트를스트림으로출력 buffer 배열에있는문자들을스트림으로출력 buffer 배열의 index 위치부터 size 크기만큼의문자들을스트림으로출력 문자열 s 를스트림으로출력 문자열의 index 위치부터 size 크기만큼의문자들을스트림으로출력 17

4 문자스트림 4-1 Writer 클래스와 Reader 클래스 Reader 클래스의주요메소드 메소드 설명 void close( ) 입력스트림을닫는다. int read( ) int read(char buffer[ ]) int read(char buffer[ ], int offset, int numchars) 다음문자를읽어반환한다. 입력스트림에읽을문자가없으면대기한다. 읽은문자가파일의끝이면 -1을반환입력스트림으로부터 buffer 배열크기만큼의문자를읽어buffer에저장입력스트림으로부터 numchars에지정한만큼의문자를읽어 buffer의 offset 위치에저장하고읽은문자의개수를반환 void mark(int numchars) 입력스트림의현재의위치에 mark 한다. boolean marksupported( ) boolean ready( ) void reset( ) int skip(long numchars) 현재의입력스트림이 mark() 와 reset() 을지원하면 true를반환다음 read() 문을수행할수있으면 true, 입력스트림이없어기다려야되는경우에는 false를반환입력스트림의입력시작부분을현재의위치에서가장가까운이전의 mark 위치로설정 numchars로지정된문자수만큼을스킵하고스킵된문자의수를반환 18

4 문자스트림 4-1 Writer 클래스와 Reader 클래스 [ 예외를호출한메소드로넘겨주는방법 ] public static void main(string args[]) throws IOException {... FileWriter fw = new FileWriter(args[0]);... fw.write("line " + i + "\n");... fw.close(); 호출한메소드에예외를넘김 19

4 문자스트림 4-1 Writer 클래스와 Reader 클래스 [ 예외를메소드내에서처리하는방법 ] public static void main(string args[]) {... try { FileWriter fw = new FileWriter(args[0]);... fw.write("line " + i + "\n");... fw.close(); catch(ioexception e) { System.our.println("Exception: " + e);... 예외발생가능영역지정 예외처리루틴작성 20

4 문자스트림 4-2 FileWriter 클래스와 FileReader 클래스 FileWriter 클래스 - OutputStreamWriter 클래스로부터상속된클래스 FileWriter 클래스의생성자 형식 FileWriter(String filepath) throws IOException FileWriter(String filepath, boolean append) throws IOException FileWriter(File fileobj) throws IOException FileReader 클래스의생성자 형식 FileReader(String filepath) FileReader(File fileobj) 21

4 문자스트림 4-2 FileWriter 클래스와 FileReader 클래스 FileWriter 클래스와 FileReader 클래스의역할 406 page 22

4 문자스트림 4-2 FileWriter 클래스와 FileReader 클래스 실습예제 FileWriterTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 import java.io.*; public class FileWriterTest { public static void main(string args[]) throws Exception String source = " 비어있어야비로서가득해지는사랑 \n" + " 영원히사랑한다는것은 \n" + " 평온한마음으로아침을맞는다는것입니다.\n"; char input[] = new char[source.length()]; source.getchars(0, source.length(), input, 0); FileWriter fw = new FileWriter(args[0]); fw.write(input); fw.close(); 객체를통해문자배열내용출력 파일을닫는다. 예외를처리 출력할문자열길이만큼의문자배열생성 문자열을문자배열로변환 FileWriter 객체생성 23

4 문자스트림 4-2 FileWriter 클래스와 FileReader 클래스 프로그램설명 - 03 : throws 절을이용하여예외를처리하였다. 파일을생성하고입출력을수행하기위해서는반드시예외를처리해주어야한다. 예를들어출력할파일을생성할수없다거나, 입력할파일이존재하지않는경우를대비하기위해서이다. - 07 : 출력할문자열 source 크기에해당하는문자배열 input을생성하였다. - 08 : getchars() 메소드는 String 클래스에선언된메소드이다. 문자열을문자배열로변환하는메소드이다. - 10 : FileWriter 객체를생성하고있다. 매개변수로받은파일이름으로파일을생성한다. - 11 : 파일에 input 문자배열을출력하고있다. write() 메소드는오버로딩되어사용된다. 문자열 source를직접 write() 메소드를이용하여출력할수도있다. 즉 5,6번문장을삭제하고 fw.write(source) 를이용하여문자열을직접출력할수있다. - 12 : 파일을닫는다. 즉출력스트림을닫는다. 24

4 문자스트림 4-2 FileWriter 클래스와 FileReader 클래스 실습예제 FileReaderTest.java 01 02 03 04 05 06 07 08 09 10 11 import java.io.*; class FileReaderTest { public static void main(string args[]) throws Exception { FileReader fr = new FileReader(args[0]); int i; while((i = fr.read())!= -1 ) { System.out.print((char)i); fr.close(); FileReader 객체를생성 파일로부터하나의문자를읽는다 문자로형변환하여출력 25

4 문자스트림 4-2 FileWriter 클래스와 FileReader 클래스 프로그램설명 - 04 : FileReader 클래스로부터객체를생성한다. 실행시매개변수로지정된파일로객체를생성한다. 만일그파일이없으면예외가발생한다. - 06 : 하나의문자를읽어 int형의변수 i에저장한다. 자바는배정연산 (=) 을포함한모든연산을 int형으로수행하므로 int형에저장하여야한다. - 07 : i 변숫값은 int형이므로그대로출력하면연속된숫자가출력되게된다. int형의변숫값을 char형으로형변환하여출력하여야한다. 26

바이트스트림과연관된클래스 410 page 27

5-1 OutputStream 클래스와 InputStream 클래스 OutputStream 클래스 - 바이트스트림을출력하는메소드들을제공 InputStream 클래스 - 입력으로 ( 키보드, 파일등 ) 부터데이터를읽어오는메소드를제공 28

5-1 OutputStream 클래스와 InputStream 클래스 OutputStream 클래스의주요메소드 메소드설명 void close() throws IOException 출력스트림을닫는다. void flush() throws IOException void write(int i) throws IOException void write(byte buffer[]) throws IOException void write(byte buffer[], int index, int size) throws IOException 버퍼에남아있는출력스트림을모두출력정수 i의하위 8비트를출력 buffer의내용을출력 buffer의 index위치부터 size만큼의바이트를출력 29

5-1 OutputStream 클래스와 InputStream 클래스 InputStream 클래스의주요메소드 메소드 설명 int available() 현재읽기가능한바이트의수를반환 void close() 입력스트림을닫는다. int read() int read(byte buffer[]) int read(byte buffer[], int offset, int numbytes) int skip(long numbytes) 입력스트림으로부터한바이트를읽어 int 값으로반환한다. 더이상읽을값이없을경우 -1을반환입력스트림으로부터 buffer[] 크기만큼을읽어 buffer 배열에저장하고읽은바이트수를반환입력스트림으로부터 numbytes만큼을읽어 buffer[] 의 offset 위치에저장하고읽은바이트수를반환 numbytes로지정된바이트를스킵 (skip) 하고스킵된바이트수를반환 void mark(int numbytes) 입력스트림의현재의위치에 mark 한다. boolean marksupported() void reset() 현재의입력스트림이 mark() 와 reset() 을지원하면 true 를반환 입력스트림의입력시작부분을현재의위치에서가장가까운이전의 mark 위치로설정 30

5-2 FileOutputStream 클래스와 FileInputStream 클래스 FileOutputStream 클래스 - OutputStream 클래스로부터상속된클래스 - 파일에바이트스트림을출력할수있는기능을제공 FileOutputStream 클래스생성자 형식 FileOutputStream(String filepath) throws IOException FileOutputStream(String filepath, boolean append) throws IOException FileOutputStream(File fileobj) throws IOException 31

5-2 FileOutputStream 클래스와 FileInputStream 클래스 FileInputStream 클래스 - InputStream 클래스로부터상속된클래스 - 파일로부터입력을받을수있는기능을제공 FileInputStream 클래스생성자 형식 FileInputStream(String filepath) throws FileNotFoundException FileInputStream(File fileobj) throws FileNotFoundException 32

5-2 FileOutputStream 클래스와 FileInputStream 클래스 FileOutputStream 클래스와 FileInputStream 클래스의역할 412 page 33

5-2 FileOutputStream 클래스와 FileInputStream 클래스 실습예제 FileOutputStreamTest.java 01 02 03 04 05 06 07 08 09 10 11 12 import java.io.*; public class FileOutputStreamTest { public static void main(string args[]) throws IOException { FileOutputStream fos = new FileOutputStream(args[0]); for(int i = 1; i <= 5 ; i++) { fos.write(i); fos.close(); System.out.println int i 의하위 8 비트만출력 (" 지정한화일명으로 ByteStreamFile 을생성하였습니다."); FileOutputStream 객체생성 34

5-2 FileOutputStream 클래스와 FileInputStream 클래스 프로그램설명 - 05 : 실행시매개변수로받은파일이름으로 FileOutputStream 객체를생성하였다. - 06 : 반복문에서 1~5 사이의숫자를 write() 메소드를통해출력하고있다. 이경우 int 형의하위 8비트만출력된다. 프로그램을수정하여 1부터 300까지를반복하여출력해보면그결과를알수있다. 35

5-2 FileOutputStream 클래스와 FileInputStream 클래스 실습예제 FileInputStreamTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 import java.io.*; class FileInputStreamTest { public static void main(string args[]) throws IOException { FileInputStream fs = new FileInputStream(args[0]); int i; while((i = fs.read())!= -1) { System.out.println(i); fs.close(); System.out.println 한바이트를읽는다. FileInputStream 객체를생성 (" 지정한파일로부터바이트스트림을입력받아화면에출력하였습니다.") ; 36

5-2 FileOutputStream 클래스와 FileInputStream 클래스 프로그램설명 - 00 : 실행시매개변수로받은파일이름으로 FileInputStream 객체를생성한다. - 00 : 파일로부터한바이트를읽어들여 int형의변수에저장한다. - 00 : int형변수의값을출력한다. 앞의 FileOutputStreamTest.java 프로그램을수정하여 1~260까지를저장한다음위의프로그램을수행시켜보면, 1부터 255까지출력되고 0, 1, 2, 3, 4 까지출력됨을볼수있다. 8비트단위의입출력이고입출력된내용이 int 형에저장되었기때문에 28-1=255까지출력됨을볼수있다. 일반적인 byte 단위의수표현에서는가장왼쪽비트를부호비트로취급하므로 27-1=127 까지만표현이가능하다. 37

5-3 DataOutputStream 클래스와 DataInputStream 클래스 DataOutputStream 클래스 - FilterOutputStream 클래스로부터상속되었고 DataOutput 인터페이스를사용하여구현된클래스 - 자바의기본자료형데이터를바이트스트림으로출력하는기능을제공 DataOutputStream 클래스생성자 형식 DataOutputStream(OutputStream outputstream) 38

5-3 DataOutputStream 클래스와 DataInputStream 클래스 DataOutputStream 클래스에구현된 DataOutput 인터페이스의메소드 메소드 설명 void write(int i) throws IOException void write(byte buffer[]) throws IOException void write(byte buffer[], int index, int size) throws IOExcep tion void writebyte(int i) throws IOException void writebytes(string s) throws IOException void writechar(int I) throws IOException void writechars(string s) throws IOException void writedouble(double d) throws IOException void writefloat(float f) throws IOException void writeint(int I) throws IOException void writelong(long l) throws IOException void writeshort(short s) throws IOException void writeutf(string s) throws IOException i를스트림으로출력 buffer를스트림으로출력 buffer의 index 위치부터 size만큼의바이트를스트림으로출력 i의하위 8비트를스트림으로출력문자열 s를스트림으로출력 i의하위 16비트를스트림으로출력문자열 s를스트림으로출력 d를스트림으로출력 f를스트림으로출력 i를스트림으로출력 l을스트림으로출력 s를스트림으로출력 s를스트림으로출력. 유니코드를 UTF-8 엔코딩을이용하여변환 39

5-3 DataOutputStream 클래스와 DataInputStream 클래스 DataOutputStream 클래스와 DataInputStream 클래스의역할 417 page 40

5-3 DataOutputStream 클래스와 DataInputStream 클래스 DataInputStream 클래스 - FilterInputStream 클래스로부터상속되고 DataInput 인터페이스를사용하여구현된클래스 - 바이트스트림으로부터자바의기본자료형데이터를읽는기능을제공 DataInputStream 클래스생성자 형식 DataInputStream(InputStream inputstream) 41

5-3 DataOutputStream 클래스와 DataInputStream 클래스 DataInputStream 클래스에구현된 DataInput 인터페이스의메소드 메소드 설명 boolean readboolean(boolean b) throws IOException byte readbyte( ) throws IOException char readchar( ) throws IOException double readdouble( ) throws IOException float readfloat( ) throws IOException long readlong( ) throws IOException short readshort( ) throws IOException int readint( ) throws IOException void readfully(byte buffer[ ]) throws IOException void readfully(byte buffer[ ] int index, int size) throws IOE xception int readunsignedbyte( ) throws IOException int readunsignedshort( ) throws IOException int skipbytes(int n) 스트림으로부터읽은 boolean 을반환 스트림으로부터읽은 byte 를반환 스트림으로부터읽은 char 를반환 스트림으로부터읽은 double 을반환 스트림으로부터읽은 float 를반환 스트림으로부터읽은 long 을반환 스트림으로부터읽은 short 를반환 스트림으로부터읽은 int 를반환 스트림으로부터 buffer 크기만큼의바이트를읽어 buffer 배열에저장스트림으로부터 size만큼의바이트를읽어 buffer의 index 위치에저장 스트림으로부터읽은 unsigned byte 를반환 스트림으로부터읽은 unsigned short 를반환 입력스트림으로부터 n 바이트를스킵 42

5-3 DataOutputStream 클래스와 DataInputStream 클래스 실습예제 DataOutputStreamTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 import java.io.*; public class DataOutputStreamTest { public static void main(string args[]) throws IOException { FileOutputStream fos = new FileOutputStream(args[0]); DataOutputStream dos = new DataOutputStream(fos); dos.writeboolean(false); dos.writebyte(byte.max_value); dos.writechar(' 김 '); dos.writedouble(double.max_value); dos.writefloat(float.min_value); dos.writeint(integer.max_value); dos.writelong(long.max_value); dos.writeshort(short.max_value); fos.close(); 파일에출력하기위한객체생성 데이터를파일에출력하기위한객체생성 ( 파일객체와연계 ) Byte 클래스에선언된상수 MAX_VALUE 사용 문자를출력하는 writechar() 메소드수행 43

5-3 DataOutputStream 클래스와 DataInputStream 클래스 프로그램설명 - 04 : 파일에출력하기위해매개변수로지정된값을가지고 FileOutputStream 객체를생성하였다. - 05 : 파일에자바의기본자료형데이터를출력하기위해 DataOutputStream 객체를생성하는데, 앞에서생성된파일객체를이용해서생성한다. 이렇게생성된객체는자바의기본자료형데이터를파일에출력할수있는특성을가지게된다. - 07~13 : 기본자료형클래스에는 MAX_VALUE와 MIN_VALUE라는상숫값을가지고있기때문에프로그램에서자유롭게사용이가능하다. 실행결과 - 위프로그램은아무런결과를출력하지않고, 파일만생성한다. 파일의내용은바이트단위 로저장되므로파일의내용을볼수없다. 44

5-3 DataOutputStream 클래스와 DataInputStream 클래스 실습예제 DataInputStreamTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 import java.io.*; class DataInputStreamTest { public static void main(string args[]) throws IOException { FileInputStream fs = new FileInputStream(args[0]); DataInputStream dis = new DataInputStream(fs); System.out.println(dis.readBoolean()); System.out.println(dis.readByte()); System.out.println(dis.readChar()); System.out.println(dis.readDouble()); System.out.println(dis.readFloat()); System.out.println(dis.readInt()); System.out.println(dis.readLong()); System.out.println(dis.readShort()); fs.close(); 파일입력을위한객체생성 기본자료형입력객체생성 ( 파일과연계 ) 기본자료형데이터를읽는다. 45

5-3 DataOutputStream 클래스와 DataInputStream 클래스 프로그램설명 - 04 : 파일로부터입력받기위해매개변수로지정된값을가지고 FileInputStream 객체를생성하였다. - 05 : 파일로부터자바의기본자료형데이터를입력받기위해 DataInputStream 객체를생성하는데, 앞에서생성된파일객체를이용해서생성한다. 이렇게생성된객체는자바의기본자료형데이터를파일로부터입력할수있는특성을가지게된다. - 07~14 : 기본자료형데이터를읽어들인다. 출력한순서대로입력하여야정확한데이터를얻을수있다. 만일순서가틀리게되면예상치않은데이터가출력되게된다. 46

5-3 DataOutputStream 클래스와 DataInputStream 클래스 47

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 직렬화된데이터 - 객체를순차적인바이트로표현한데이터를의미 영속성 - 객체가자신의상태를기록해두어다음기회에또는다른환경에서재생될수있는능력을 의미 48

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 Serializable 인터페이스를포함하는클래스 형식 class Box implements Serializable { int w; int h; int d; Serializable 인터페이스를포함 49

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 ObjectOutputStream 클래스생성자 형식 ObjectOutputStream(OutputStream outputstream) 50

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 ObjectOutputStream 클래스의주요메소드 메소드 설명 void close( ) 스트림을닫는다. void flush( ) 버퍼의모든내용을출력한다. void write(byte[ ] b, int index, int size) 바이트배열 b의 index 위치부터 size만큼을출력한다. void write(byte[ ] b) 바이트배열 b를출력한다. void write(int ontbyte) int 값의하위한바이트를출력한다. void writeboolean(boolean data) boolean 값을출력한다. void writebyte(int data) 한바이트를출력한다. void writebytes(string str) str 문자열을연속된바이트로출력한다. void writechar(int data) 한문자를출력한다. void writechars(string str) str 문자열을연속된문자로출력한다. void writedouble(double data) double 값을출력한다. void writefloat(float data) float 값을출력한다. void writeint(int data) int 값을출력한다. void writelong(long data) long 값을출력한다. void writeobject(object obj) 객체를출력한다. void writeshort(int data) short 값을출력한다. void writeutf(string data) 문자열을 UTF 인코딩으로출력한다. 51

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 ObjectInputStream 클래스 - 직렬화된데이터로부터역직렬화 (Deserialization) 를수행하여원래의데이터로복구하는 기능을제공하는클래스 ObjectInputStream 클래스생성자 형식 ObjectInputStream(InputStream inputstream) 52

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 ObjectOutputStream 클래스의주요메소드 메소드 설명 void close() 스트림을닫는다. int read() 한바이트를읽는다. int read(byte[] b, int off, int len) 바이트배열로읽어들인다. boolean readboolean() boolean 값을읽는다. byte readbyte() 한바이트를읽는다. char readchar() 문자를읽는다. double readdouble() double 값을읽는다. float readfloat() float 값을읽는다. int readint() int 값을읽는다. long readlong() long 값을읽는다. Object readobject() 객체를읽는다. short readshort() short 값을읽는다. int readunsignedbyte() 부호없는바이트값을읽는다. int readunsignedshort() 부호없는 short 값을읽는다. String readutf() UTF 인코딩을읽어서문자열타입으로반환 53

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 실습예제 ObjectWriteTest.java 01 02 03 04 05 06 07 08 09 10 11 12 import java.io.*; class Box implements Serializable { int w; int h; int d; public Box(int a, int b, int c) { w = a; h = b; d = c; Serializable 인터페이스를포함하는클래스생성 54

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 실습예제 ObjectWriteTest.java 13 14 15 16 17 18 19 20 21 22 23 24 25 public class ObjectWriteTest { public static void main(string args[]) throws Exception { String s1 = "*** 박스의가로, 세로, 높이 ***"; Box mybox1 = new Box(10,20,30); ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream ("tmp.txt")); oos.writeobject(s1); String 객체출력 oos.writeobject(mybox1); oos.writedouble(123.456); oos.close(); 객체를파일에출력하기위한객체생성 Box 객체출력 Double 객체출력 55

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 프로그램설명 - 02 : Box 클래스의객체를저장하기위해서클래스를작성할때 Serializable 인터페이스를포함하여작성하였다. - 17 : 파일에객체를저장하기위해파일이름을가지고 FileOutputStream 객체를생성한다음, 그객체를가지고 ObjectOutputStream 객체를생성하였다. 위문장은두개의문장을하나의문장으로작성한것이다. 즉위문장은다음문장과같은의미이다. FileOutputStream oof = new FileOutputStream("tmp.txt"); ObjectOutputStream oos = new ObjectOutputStream(oof); - 18 : writeobject() 메소드를이용하여 String 객체 s1을출력하였다. - 20~21 : Box 객체와 Double 객체를출력하였다. 56

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 실습예제 ObjectReadTest.java 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 import java.io.*; public class ObjectReadTest { public static void main(string args[]) throws Exception { ObjectInputStream ois = new ObjectInputStream(new FileInputStream("tmp.txt")); String s2 = (String)ois.readObject(); Box mybox2 = (Box)ois.readObject(); System.out.println(s2); System.out.println(" 박스의가로는 : "+mybox2.w); System.out.println(" 박스의세로는 : "+mybox2.h); 하나의객체를읽어 String 으로형변환 읽은객체를출력 System.out.println(" 박스의높이는 : "+mybox2.d); System.out.println("Double 값은 : " + ois.readdouble()); 하나의객체를읽어 Box 로형변환 읽은객체의요소를출력 읽은 Double 객체의값출력 파일로부터객체를읽기위한객체생성 57

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 프로그램설명 - 04, 05 : FileInputStream 클래스와 ObjectInputStream 클래스를이용하여파일로부터객체를읽어들일수있는특성을가진객체를생성하였다. - 06 : 생성된객체를이용하여하나의객체를읽어들인다음, String 클래스의객체로형변환을하였다. readobject() 메소드가반환하는객체는 Object 클래스형의객체이고이객체를 Object 클래스 ( 자바의최상위클래스 ) 의하위클래스인 String형의객체변수에배정하려면명시적인형변환문장이요구된다. 형변환문장을기술하지않으면오류가발생한다. - 08 : 하나의객체를읽어들여 Box형으로변환한다. - 10~14 : 객체의요소들을출력하였다. - 15 : Double 객체를 readdouble() 메소드 (64비트:8바이트를읽어들임 ) 를사용하여읽어들였다. 만일 readfloat() 메소드 (32비트 : 4바이트를읽어들임 ) 로읽어들이면틀린값이출력되게된다. 58

5-4 OjbectOutputStream 클래스와 OjbectInputStream 클래스 59

학습정리 java.io 패키지개요 1 자바의입출력은하드웨어와독립적으로설계되어어떠한컴퓨터에서나일관된입출력을수행한다. 2 자바의입출력은스트림 (stream) 을사용한다. 스트림은순서가있는일련의데이터를의미한다. 파일과디렉터리 1 자바는파일과디렉터리를다루기위해 File 클래스를제공한다. 다양한메소드를 이용하여디렉터리와파일에관한정보를얻을수있다. 문자스트림과바이트스트림 1 스트림에는문자스트림과바이트스트림두가지형태가있다. 2 문자스트림은 16비트문자나문자열들을읽고쓰기위한스트림이고, 바이트스트림 ( 또는바이너리스트림 ) 은 8비트의바이트를읽고쓰기위한스트림이다. 60

학습정리 문자스트림 1 2 Writer와 Reader 클래스는문자스트림입출력을대표하는추상클래스로서다양한메소드를가지고있다. 이러한추상클래스는하위클래스에서오버라이딩되어사용된다. FileWriter 클래스와 FileReader 클래스는파일에문자스트림을입출력하기위해사용하는클래스이다. 바이트스트림 1 2 3 4 OutputStream 클래스와 InputStream 클래스는바이트스트림입출력을대표하는추상클래스로서다양한메소드를가지고있다. 이러한추상클래스는하위클래스에서오버라이딩되어사용된다. FileOutputStream 클래스와 FileInputStream 클래스는파일에바이트스트림을입출력하기위해사용하는클래스이다. DataOutputStream 클래스와 DataInputStream 클래스는자바의기본자료형데이터를바이트로입출력하기위해사용하는클래스이다. OjbectOutputStream 클래스와 OjbectInputStream 클래스는객체를입출력하기위한클래스이다. 객체를입출력하기위해자바는직렬화된데이터를사용한다. 61

62