I/O 프로그래밍 컴퓨터 공학실험(I) 인공지능 연구실.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

SCJP. Garbage Collection  Garbage Collector( 이하 GC) 가 Heap 영역 에 할당된, 더 이상 사용되지 않는 메모리인 Garbage 를 다른 객체가 사용할 수 있도록 정리하는 것.  C++ 에서의 메모리 해제 int* v=new.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
자바네트워크 제2주 바이트 입출력 스트림, 필터 입출력 스트림 컴퓨터시뮬레이션학과 2014년 봄학기 담당교수 : 이형원
캡스톤 프로젝트(자바) 입출력.
명품 JAVA Programming 제 8 장 입출력 스트림.
네트워크 프로그래밍 및 실습.
명품 JAVA Programming.
자바 5.0 프로그래밍.
Java의 정석 제 14 장 입출력(I/O) Java 정석 남궁성 강의
입출력 14.1 java.io 패키지의 개요 14.2 파일과 디렉토리
28강 JAVA 입출력(I/O) 알아보기 - 입출력(I/O) 이란? - JAVA 입출력 API(Input~, Output~)
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
제9장 입출력과 JNI.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
최윤정 Java 프로그래밍 클래스 상속 최윤정
12장. JSP에서 자바빈 활용 제12장.
10장 예외 Lab 10-1.
파일 입출력에 사용되는 자바 클래스들 JDK 라이브러리의 파일을 다루는 클래스들 파일의 내용을 읽고 쓰는 클래스들
3. 자바에서 지원하는 패키지 자바에서 기본적으로 제공하는 패키지.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
Java 12장. 입출력 public class SumTest {
8장 자바 입출력.
7장 파일과 데이터베이스.
14.3 문자(character) 스트림과 바이트(byte) 스트림
Lesson 3. 입출력과 제어문.
Chapter 14. 입출력 스트림.
Java Programming Language (4)
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
JAVA ADVANCED File IO IT 아카데미.
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
Lesson 6. 형변환.
5장. 참조 타입.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
주소록 프로그램.
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
명품 JAVA Essential.
Lesson 7. 클래스와 메소드 - 1.
컴퓨터 프로그래밍 실습 #6 제 4 장 클래스 작성.
Network Programming(1)
11장. 1차원 배열.
[INA470] Java Programming Youn-Hee Han
명품 JAVA Programming.
입출력 CHAPTER 12 Section 1 java.io 패키지 개요 Section 2 파일과 디렉터리
I/O&socket통신 POWERPOINT & GROUP STUDY 한재희 김상훈 최기람 황인준 이어진.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Lesson 4. 수식과 연산자.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
유승석 FILE I/O File Input/Output 유승석 SD50 – C# & .NET Platform.
24장. 파일 입출력.
Lesson 2. 기본 데이터형.
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
자바 5.0 프로그래밍.
자바 5.0 프로그래밍.
PMIS 서버 설정 환경설정 작성자 : 배경환.
CHAP 21. 전화, SMS, 주소록.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
자바 5.0 프로그래밍.
MIDP 네트워크 프로그래밍 ps lab 김윤경.
발표자 : 이지연 Programming Systems Lab.
구조체(struct)와 공용체(union)
Chapter 12 파일 입출력.
JSP Programming with a Workbook
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
6 객체.
Presentation transcript:

I/O 프로그래밍 컴퓨터 공학실험(I) 인공지능 연구실

stream 이해하기 stream input stream과 output stream 데이터의 소스(source) 혹은 목적(destination)인 입력 또는 출력 장치의 추상적인 표현 프로그램에 입력되거나 또는 프로그램에서 출력되는 바이트 열(sequence of bytes)이다. 자바에서는 stream을 이용하여 입출력 한다. Stream programming의 장점은 데이터의 목적지나 형(type)에 관계 없이 데이터를 읽거나 쓰는 알고리즘이 동일하다. input stream과 output stream input stream : 디스크 파일이나 키보드 또는 원격 컴퓨터 등의 data를 읽을 때 사용 output stream : 바이트 열이 전송될 수 있는 장치(파일, 원격 시스템)에 data를 쓸 때 사용

FileInputStream : FileOutputStream (1) FileInputStream 생성자는 파일이 발견되지 않으면 FileNotFoundException을 발생 시킨다. * FileInputStream myStream = new FileInputStream(“C:\data\aaa.txt”) ; FileOutputStream 물리적 파일에 쓰기 위해서 FileOutputStream 객체를 사용 파일에 대해 쓰기가 허가되지 않으면 SecurityException을 발생시킨다. * FileOutputStream myStream = new FileOutputStream(“bbb.txt”) ;

FileInputStream : FileOutputStream (2) import java.io.*; // command line argument로 파일이름 입력 받아 다른 // 이름의 파일로 copy public class FileCopy { public static void main(String [] args) throws Exception { if (args.length < 2) { System.out.println("Usage : java CopyFile file1 file2"); return; } FileInputStream fis= new FileInputStream(args[0]); //입력받은 첫 번째 파일 읽고 FileOutputStream fos = new FileOutputStream(args[1]); //입력받은 두 번째 파일에 복사 int readByte = 0; while ((readByte = fis.read()) != -1) { // EOF까지 1byte를 읽는다 fos.write(readByte); // 1 byte를 쓴다 fis.close(); fos.close(); System.out.println(args[0] + " copied to " + args[1]);

DataInputStream : DataOutputStream (1) FileInputStream, FileOutputStream - 주로 byte단위의 I/O에 사용 DataInputStream, DataOutputStream - 주로 primitive I/O가 필요할 경우에 사용 Java는 문자나 문자열을 다룰 때 16bit-UniCode방식을 사용 한글은 byte 단위로 I/O하게 되면 글자 자체가 깨질 위험이 있다.(한글 => 2byte) I/O할 때 이렇게 16bit-Unicode를 사용하는 I/O class들을 사용한다. Reader, Writer – 내부적으로 읽어 들인 데이터를 2byte 조합으로 사용하는 stream

DataInputStream : DataOutputStream (2) DataOutputStream Class Method summary Method summary writeByte(int value) Int 인수의 하위 바이트를 스트림에 쓴다. writeBoolean(boolean value) Boolean값이 true 이면 1을, false이면 0을 스트림에 한 바이트 단위로 쓴다. writeChar(int value) 인수의 하위 두 바이트를 스트림에 쓴다. writeShort(int value) writeInt(int value) int 인수의 네 바이트 전체를 스트림에 쓴다. writeLong(long value) Long 인수의 여덟 바이트 전체를 스트림에 쓴다. writeFloat(float value) Float 인수의 네 바이트를 스트림에 쓴다. writeDouble(double value) Double 인수의 여덟 바이트를 스트림에 쓴다.

DataInputStream : DataOutputStream (3) import java.io.*; //파일에 문자를 기록하고 기록된 문자를 읽어 화면에 출력 public class ExDataStream { public static void main(String [] args) throws Exception { if (args.length < 1 ) { System.out.println("실행방법 : java ExDataStream.java aa.txt"); return; } FileOutputStream fos = new FileOutputStream(args[0]); DataOutputStream dos = new DataOutputStream(fos); //privitive type size의 i/o에 이용 dos.writeUTF("홍길동"); // UTF-8 encoding 으로 파일에 기록 dos.writeUTF("41456"); // UTF-8은 16bit 유니코드를 8bit 문자로 변경 dos.writeInt(30); dos.close(); FileInputStream fis = new FileInputStream(args[0]); DataInputStream dis = new DataInputStream(fis); System.out.println("이름 : " + dis.readUTF()); //파일의 내용을 읽어서 출력 System.out.println("번호 : " + dis.readUTF()); System.out.println("나이 : " + dis.readInt()); dis.close();

reader : writer import java.io.*; //키보드로부터 문자열을 입력 받아 파일에 저장 public class StringInput { public static void main(String [] args) throws Exception { String inputString; InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); FileOutputStream fos = new FileOutputStream(args[0]); OutputStreamWriter osr = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osr); inputString = br.readLine(); //readLine()은 엔터를 치기 전까지 입력한 내용을 버퍼 에 읽어 온다. bw.write(inputString + "\n"); //버퍼의 내용을 쓴다 bw.close(); //생성한 모든 stream object을 close할 필요 없이 최종 stream object만 close하면 된다. br.close(); }

File Class File Class Method summary File Object는 스트림이 아니라 하드 디스크 상의 물리적 파일이나 디렉토리로의 경로명을 나타낸다. File Object는 파일 뿐만 아니라 디렉토리도 가리킬 수 있다. 파일이나 디렉토리로의 경로명을 나타내는 객체를 만들 수 있게 해주고, 만든 객체를 테스트 할 수 있는 여러 가지 메소드를 제공한다. Method summary exists() File 객체가 참조하는 파일이나 디렉토리가 존재하면 true, 아니면 false 리턴 isDirectory() File 객체가 디렉토리를 참조하면 true, 아니면 false 리턴 isFile() File 객체가 파일을 참조하면 true, 아니면 false 리턴 canRead() File 객체가 참조하는 파일을 읽을 수 있으면 true, 아니면 false 리턴한다. 파일에 대한 읽기 SecurityException을 발생시킬 수 있다. canWrite() File 객체가 참조하는 파일을 쓸 수 있으면 true, 아니면 false 리턴 한다. 파일에 쓸 수 없으면 SecurityException을 발생시킬 수 있다.

URL Class URL Class Java.net 패키지에 정의 되어 있다. URL객체는 특정 URL에 대한 정보를 가지고 있으며, 네트워크 상에서 어디에 있든지 접근하거나 읽을 수 있다. URL은 데이터의 위치를 나타내는 경로의 확장된 형태라고 할 수 있다. 인터넷 상의 URL을 local pc의 파일처럼 다룰 수 있다. import java.io.*; // 인터넷 상의 원하는 페이지를 읽어오는 예제 import java.net.*; //URL Class사용하기위해 반드시 import한다. public class GetIndexHtml { public static void main(String [] args) throws Exception { byte [] inputString = new byte[1024]; InputStream is = (new URL(args[0])).openStream(); FileOutputStream fos = new FileOutputStream(args[1]); while(is.read(inputString, 0, inputString.length) != -1) { fos.write(inputString); } fos.close();

RandomAccessFile(1) RandomAccessFile Method summary 파일을 임의로 액세스할 때 사용 * RandomAccessFile raf = new RandomAccessFile("c:\myfile.txt", "r/w"); Method summary seek(long pos) 파일의 현재 위치를 pos 인수가 지정한 위치로 옮긴다 getFilePointer() 파일의 현재 위치(파일의 시작으로부터의 변위)를 long 유형으로 리턴한다. length() 파일의 길이를 바이트 단위의 long 유형값으로 리턴한다. 엑세스 모드는 읽기만 : r, 읽고쓰기 :r/w

RandomAccessFile(2) import java.io.*; import java.util.*; public class RandomWrite{ public static void main(String [] args) throws Exception { RandomAccessFile raf = new RandomAccessFile("Mylog.log", "rw"); raf.seek(raf.length()); //파일의 가장 마지막으로 현재 위치를 옮긴다. raf.writeUTF(new Date().toString()); //현재 날짜를 쓴다. raf.close(); }

Serialization(1) Serialization Serializable interface 객체를 외부 파일에 저장하고 읽어 오는 과정 자바에서 제공하는 기본 데이터 type 이외에도 여러 객체들을 스트림에 쓰고 읽을 수 있는 기능을 제공 serializable이 될 수 있는 object의 class는 Serializable이라고 하는 interface를 반드시 implements해야 한다. Serializable interface serializable interface implements할 method가 없다. Serializable을 implements한다는 것은 이 class가serializable이 가능하다는 의미한다. Object가 serialization될 때 data부분(member변수)만 저장되며 constructor나 method의 code는 저장되지 않는다.

Serialization(2) import  java.io.*; //primitive type이 아닌 object를 파일에 읽고 쓰는 예제  public class TestSerialization implements Serializable {          String name;           int age = 7;          TestSerialization (String name, int age) {                       this.name = name;                       this.age = age;       } } public class SerializeMyObject { //TestSerialization class의 object를 파일에 write예제             TestSerialization ts;               public static void main(String [] args) throws Exception {                           SerializeMyObject smo = new SerializeMyObject();                           smo.writeMyObject(); // object를 file로 write함.                           smo.ts = null; // object를 memory에서 없앰.                           smo.readMyObject(); // 파일에서 object를 다시 읽어옴.                           System.out.println(smo.ts.name);               }

Serialization(3)        public void writeMyObject() throws Exception { //object를 파일에 write                  ts = new TestSerialization("홍길동", 32);                  ObjectOutputStream oos =                   new ObjectOutputStream(new FileOutputStream("myObject.txt"));                   oos.writeObject(ts); // object를 파일로 write함.                   oos.close();         }           public void readMyObject() throws Exception { // 파일에 저장된 object를 읽어 //메모리에 올리는 메서드                  ObjectInputStream ois =                  new ObjectInputStream(new FileInputStream("myObject.txt"));                  ts = (TestSerialization)ois.readObject(); // object를 파일에서 읽어서 memory에 올림.                  ois.close(); }